为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕容森 2021-12-13 18:21:02
我是 Golang 的新手,根据我到目前为止所学到的知识,有 3 种不同的方法来新建一个结构:a := MyStruct {}  // plain by value style. Is that what this is called?b := new(MyStruct) // using newc := &MyStruct {} // using a reference我不清楚这些之间的实际差异然后我发现在使用“普通”样式与“新”样式&打印对象的内存地址时,我必须添加一个参考符号”和“参考”样式。我的假设是,这是因为使用“普通”样式以不同方式分配内存,但这只是一个猜测。fmt.Printf("%p\n", &a)fmt.Printf("%p\n", b)似乎使用“新”和“参考”样式是等效的选项,因此在它们之间进行选择是一种风格决定吗?关于我应该使用哪种方法,这种语言是否有惯用的偏好?有没有我还没有发现的其他风格?
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

a := MyStruct {}  

b := new(MyStruct) 

c := &MyStruct {} 

a是一个复合文字值。b是指向该类型零值的指针。c是指向复合文字值的指针。a并且c很常见。b是不常见的,在大多数情况下,c被使用。


Go为例。


查看完整回答
反对 回复 2021-12-13
  • 1 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信