Go语言指针类型

Go语言指针类型教程

Go 语言 中的指针类型,就是一个存放地址的 类型。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) }

程序运行后,控制台输出如下:

45 golang pointer.png

首先,我们定义了一个 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) }

程序运行后,控制台输出如下:

46 golang pointer.png

我们使用 * 符号,获取指针变量锁对应的地址存放的值。

指针类型

指针可以修改变量的值

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) }

程序运行后,控制台输出如下:

47 golang pointer.png

我们使用 * 符号获取指针变量 pScore 的值,并给其赋值,即改变了指针变量的值。最后,我们再次获取原来的变量 score 的值,发现已经被修改,即指针变量可以修改它所指向的变量的值。

Go语言指针类型总结

Go 语言中的指针类型,就是一个存放地址的类型。Go 语言指针变量存放的是一个地址,这个地址指向的空间存放的才是值。

使用 & 符号可以获取一个变量的地址。使用 * 符号可以获取 Go 语言指针类型的地址所对应的值。Go 语言指针不支持指针的移动,这是 Go 语言指针与其他语言指针的区别。