一个指针变量可以指向任何一个值的内存地址,指针的默认值为 nil 。
var a int = 7 // a为int型变量
fmt.Println(a) // 7
var b *int // b为指向int型变量的指针,默认值为nil
fmt.Println(b) // <nil>
b = &a // 令b指向a的地址
*b = 247 // 改变b指向的地址的内容
fmt.Println(a, b, *b) // 247 0xc0000b6010 247
fmt.Println(a == *b, &a == b) // true true
数组指针和指针数组
// 数组指针
arr := [3]string{"1", "2", "3"}
var arrP *[3]string
arrP = &arr
fmt.Println(arr, arrP) // [1 2 3] &[1 2 3]
// 指针数组
var str1 = "1"
var str2 = "2"
var str3 = "3"
var arrPP = [3]*string{&str1, &str2, &str3}
fmt.Println(arrPP) // [0xc000010200 0xc000010210 0xc000010220]
*arrPP[1] = "7"
fmt.Println(str2) // 7