理解 Go make 和 new 的区别 | 三月沙
Opened this issue · 2 comments
utterances-bot commented
理解 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
dactac commented
这说明 make(T, args) 返回的是引用类型,在函数内部可以直接更改原始值。
返回的不是引用类型,golang函数调用总是传值。 可以更改生效是因为两个slice指向同一个地址空间
cslqm commented
第三个代码块,第10行,应该是语法有错误。