GO中的指针
go中的指针就是数据的地址,与C语言不同的是它不能进行偏移和运算(体现了GO简洁的设计哲学)
new & make
new()函数
new(Type) *Type //函数签名
new 会根据Type开辟内存空间,并赋予其为对应Type的零值,然后将这块数据的指针返回
一个具体的例子:
func main() {
a := new([3]*int)
fmt.Printf("%T",a)
fmt.Println()
fmt.Println(*a)
}
Output:
*[3]*int
[<nil> <nil> <nil>] //零值初始化
make()函数
- make函数只能分配slice,map,chan
- 返回的是类型本身(他们本身就是引用类型,所以也没必要返回指针了)
异同点
- 同 :都用来分配内存
- 异:返回值(指针,类型本身),适用类型,初始化