在Go中使用new vs var

您有一个带有参数的函数,一个指向类型的指针。


type bar struct{...}


func foo(arg *bar)

之间有什么区别:


var b bar

foo(&b)


b := new(bar)

foo(b)

使用new创建分配。


弑天下
浏览 225回答 2
2回答

守候你守候我

不,没有区别,因为与C相反,Go明确声明可以提供一个指向本地创建的变量的指针。从文档中:注意,与C语言不同,完全可以返回局部变量的地址。函数返回后,与变量关联的存储仍然存在

慕姐8265434

两者都应表示相同的指针,该指针指向使用相同默认值初始化的相同对象。该规范确实提到:后type T struct { i int; f float64; next *T }t := new(T)以下内容成立:t.i == 0t.f == 0.0t.next == nil之后也是如此var t T还:取一个复合文字的地址(地址运算符)会生成一个指向该文字值的唯一实例的指针。var pointer *Point3D = &Point3D{y: 1000}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go