概念和意义的解析
GO菜鸟教程对指针的解释:
一个指针变量指向了一个值的内存地址。
Golang语言的指针类型有什么作用:
1)指针类型用于传递地址, 而不是传递值, 因为 golang 的函数, 所有的参数都是传递一个复制的值. 如果值的体积过大, 那么就会严重降低效率, 而传递一个地址, 就会大大提高效率. 另外传递指针也能让 go 函数实现对变量值的修改.
2)如果一个复杂类型的值被传递了若干次后, 和自己比较, 虽然用于保存的容器和名称变了, 但用于保存值的地址不变, 这个时候, 只要使用指针进行对比, 就知道还是原来的东西.
举例
理解1:指针指向变量的地址
var a int = 100
fmt.Println(&a)
//输入&a = 0xc000014080就是变量a的内存地址
理解2:指针变量的创建和传递
var b string = "我是柯柯"
var ip *string
ip = &b
fmt.Println(ip)
fmt.Println(*ip)
//输入ip = 0xc000010200就是变量b的内存地址
//输出*ip代表地址所值得值
理解3:大量数据传递时,可以传递指针地址
//定义一个函数返回指针类型
func getzz() *int {
var c *int
var cnumber int = 12
c = &cnumber
fmt.Println(*c)
return c
}
func main() {
fmt.Println(getzz())
fmt.Println(*getzz())
}
//fmt.Println(getzz()) = 0xc000014088
//fmt.Println(*getzz()) = 12