引用类型-3-指针
一 指针
1.1 指针的创建
Go保留了指针,代表某个内存地址,默认值为 nil
,使用 &
取变量地址,通过 *
访问目标对象。
简单示例:
var a int = 10
fmt.Println("&a=", &a) // 0xc000096008 一个十六进制数
var p *int = &a
fmt.Println("*p=", *p) // 10
注意:
- Go同样支持多级指针,如
**T
- 空指针:声明但未初始化的指针
- 野指针:引用了无效地址的指针,如:
var p *int = 0
,var p *int = 0xff00
(超出范围) - Go中直接使用
.
访问目标成员
1.2 指针使用示例:实现变量值交换
func swap(p1,p2 *int) {
*p1,*p2 = *p2,*p1
}
1.3 结构体指针
示例:
type User struct{
name string
age int
}
func main() {
var u = User{
name:"lisi",
age: 18,
}
p := &u
fmt.Println(u.name) //输出李四
fmt.Println(p.name) //输出李四
}