Go语言编程快速入门:指针(上)
P27 go26.1 - 指针(上)
指针
- 是一个变量
- 指向另一个变量地址的变量
- 安全,不会出现迷途指针(dangling pointers)
符号
- &:地址符
- 表示地址操作符,可以获取变量的内存地址
- 无法获取 bool/string 等字面值的地址(&12/&"xx" 都会报错)
- *:星号
- *var: 用来解引用变量,取地址里的值
- *string: 声明指针类型
package main
import "fmt"
func main() {
answer := 12
p1 := &answer
fmt.Println(p1)
fmt.Println(*p1)
}
指针类型
注意
- *放在类型前:表示指针类型
- *变在变量前:表示取指针指向的值
answer := 12
p1 := &answer
fmt.Printf("p1's type is :%T\n", p1)
// p1's type is :*int
访问数组/字段的时候,可以不进行解引用
type person struct {
name string
age int32
}
xm := &person{name: "aric", age: 100}
xm.name = "feizheng"
// 等效于下面:
(*xm).name = "feizheng"
fmt.Printf("%+v", xm)
参考