Golang:创建新实例的 3 种方法,但有什么区别?

我是 Golang 的新手,根据我到目前为止所学到的知识,有 3 种不同的方法来新建一个结构:


a := MyStruct {}  // plain by value style. Is that what this is called?

b := new(MyStruct) // using new

c := &MyStruct {} // using a reference

我不清楚这些之间的实际差异然后我发现在使用“普通”样式与“新”样式&打印对象的内存地址时,我必须添加一个参考符号”和“参考”样式。我的假设是,这是因为使用“普通”样式以不同方式分配内存,但这只是一个猜测。fmt.Printf("%p\n", &a)fmt.Printf("%p\n", b)

似乎使用“新”和“参考”样式是等效的选项,因此在它们之间进行选择是一种风格决定吗?关于我应该使用哪种方法,这种语言是否有惯用的偏好?有没有我还没有发现的其他风格?


慕容森
浏览 203回答 1
1回答

德玛西亚99

a := MyStruct {}  b := new(MyStruct) c := &MyStruct {} a是一个复合文字值。b是指向该类型零值的指针。c是指向复合文字值的指针。a并且c很常见。b是不常见的,在大多数情况下,c被使用。以Go之旅为例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go