萌新Gopher学习笔记-指针,make&new函数

19 阅读1分钟

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
  • 返回的是类型本身(他们本身就是引用类型,所以也没必要返回指针了

异同点

  • 同 :都用来分配内存
  • 异:返回值(指针,类型本身),适用类型,初始化