1、go取址符为&.
var a int = 10
fmt.Printf("变量地址:%x\n", &a)
2、指针:
一个指针变量指向了一个值的内存地址:
使用方式: var var_name *var_type
var ip *int /*指向整型*/
var fp *float32 /*指向浮点型*/
3、如何使用指针
1、定义指针变量;
2、为指针变量赋值
3、访问指针变量中指向的地址
var ip *int
var a int
ip = *&a
fmt.Printf("value:%d\n", *ip)
3、go空指针
一个指针被定义后没有分配到任何变量,值为nil。
nil指针也称为空指针。
3.1空指针判断
if (ptr != nil) //ptr非空指针
if (ptr == nil) //ptr是空指针
4、数组指针
以下是整型指针数组:
var ptr [MAX]*int
var ptr [3]*int
var a := []int{10,100,200}
for i := 0; i < 3; i++ {
ptr[i] = &a[i]
}
5、指向指针的指针;
声明格式: var ptr **int
var a int
var ptr *int
var pptr **int
ptr = &a
pptr = &ptr
//获取pptr的值
fmt.Printf("a = %d\n", a)
fmt.Printf(" *ptr=%d\n", *ptr)
fmt.Printf("**ptr = %d\n", **ptr)