Go-Pointer
2021-03-29 本文已影响0人
SodaCrush
go 指针
声明指针类型
- x 错误写法
此时创建的是一个空指针,而空指针无法获取到内存地址,也就无法根据内存地址找到指向的值
var a *int
*a = 100
- √ 正确写法
通过内置new函数申请内存地址,此时a的值为int类型的0值
var a = new(int)
*a = 100
取指针地址
用&
符号进行取址操作,例如:&student
取指针地址指向的值
用*
符号进行取值操作,例如:*student
var a int = 10
// 将a的内存地址赋给ptrA
var ptrA *int = &a
// 修改ptrA指向的值
*ptrA = 100
fmt.Println(a)
new 和 make 的区别
- new函数
func new(Type) *Type
new函数一般用来创建一个类型的指针,该指针对应的值为该类型的零值 - make函数
func make(t Type, size ...IntegerType) Type
make函数同样也是分配内存的,但只用于slice、map以及chan的内存创建,返回的类型就是这三个类型本身,而不是他们的指针类型