zhyq0826/zhyq0826.github.io

理解 Go make 和 new 的区别 | 三月沙

Opened this issue · 2 comments

理解 Go make 和 new 的区别 | 三月沙

new 和 make 都可以用来分配空间,初始化类型,但是它们确有不同。 new(T) 返回的是 T 的指针new(T) 为一个 T 类型新值分配空间并将此空间初始化为 T 的零值,返回的是新值的地址,也就是 T 类型的指针 *T,该指针指向 T 的新分配的零值。 123456789p1 := new(int)fmt.Printf("p1 --> %#v \n ", p1) //(*in

http://sanyuesha.com/2017/07/26/go-make-and-new/

这说明 make(T, args) 返回的是引用类型,在函数内部可以直接更改原始值。

返回的不是引用类型,golang函数调用总是传值。 可以更改生效是因为两个slice指向同一个地址空间

cslqm commented

第三个代码块,第10行,应该是语法有错误。