go 指针与内存
go指针
1.go指针提供了控制数据结构的指针的能力,但不能进行指针运算,go语言允许控制特定集合的数据结构,分配的数量以及内存访问模式。
2.默认值 nil,没有 NULL 常量
3.不支持指针运算,不⽀支持 "->" 运算符,直接⽤用 "." 访问目标成员
4.Go语言的取地址符是 & 放入一个变量前使用就会返回相应变量的内存地址
- *指针 代表一级指针 **指针代表二级指针 依次类推
指针使用;
var p *int //申明指针 以及指针数据类型
示例:
func main{
var a int = 20
var p *int //申明指针类型 默认值为nil(空指针 值为0)指向内存地址编号为0的空间
p = &a // 将a的指针变量赋值给指针变量p
p = 0x343434 // 野指针 指针变量指向了一个未知空间 这是报错的 错误用法 不被允许
/* 访问野指针和空指针都会报错*/
// 可以通过指针变量间接访问变量对应的内存空间
*p = 345
fmt.Println(a)
fmt.Println(&a)
fmt.Println(p)
fmt.Println(*p)
}
打印结果为:
345
0xc420014060
0xc420014060
345
注意 &a 不能赋值 不能&a = *** 只能取对应地址所对应的空间内容