Go 语言 中的指针类型,就是一个存放地址的 类型。Go 语言指针 变量 存放的是一个地址,这个地址指向的空间存放的才是值。
Go 语言指针不支持指针的移动,这是 Go 语言指针与其他语言指针的区别。
var varname1 *type = &varname2
参数 | 描述 |
---|---|
var | 定义变量所使用的关键字。 |
varname1 | 指针类型的变量。 |
type | 指针变量的类型。 |
varname2 | 需要保持地址的变量。 |
使用 & 符号可以获取一个变量的地址。使用 *
符号可以获取 Go 语言指针类型的地址所对应的值。
使用 *
定义指针变量
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello 嗨客网(www.haicoder.net)")
var score int32 = 99
var pScore *int32 = &score
fmt.Println("Score = ", score, "PScore =", pScore)
}
程序运行后,控制台输出如下:
首先,我们定义了一个 int32 类型的变量 score。接着,我们使用 *
定义一个指向变量 score 的指针变量,使用 & 获取变量 score 的地址。
最后,我们打印出 score 的值即为我们设置的初值, 打印 pScore 的值,pScore 的值为变量 score 的地址。
使用 *
可以获取指针变量对应的地址存放的值
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello 嗨客网(www.haicoder.net)")
var score int32 = 99
var pScore *int32 = &score
var scoreVal = *pScore
fmt.Println("Score = ", score, "PScore =", pScore, "ScoreVal =", scoreVal)
}
程序运行后,控制台输出如下:
我们使用 *
符号,获取指针变量锁对应的地址存放的值。
指针可以修改变量的值
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello 嗨客网(www.haicoder.net)")
var score int32 = 99
var pScore *int32 = &score
*pScore = 199
var scoreVal = *pScore
fmt.Println("Score = ", score, "PScore =", pScore, "ScoreVal =", scoreVal, "Score =", score)
}
程序运行后,控制台输出如下:
我们使用 * 符号获取指针变量 pScore
的值,并给其赋值,即改变了指针变量的值。最后,我们再次获取原来的变量 score
的值,发现已经被修改,即指针变量可以修改它所指向的变量的值。
Go 语言中的指针类型,就是一个存放地址的类型。Go 语言指针变量存放的是一个地址,这个地址指向的空间存放的才是值。
使用 & 符号可以获取一个变量的地址。使用 * 符号可以获取 Go 语言指针类型的地址所对应的值。Go 语言指针不支持指针的移动,这是 Go 语言指针与其他语言指针的区别。