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

在Go中使用new vs var

在Go中使用new vs var

Go
弑天下 2021-05-13 14:15:13
您有一个带有参数的函数,一个指向类型的指针。type bar struct{...}func foo(arg *bar)之间有什么区别:var b barfoo(&b)和b := new(bar)foo(b)使用new创建分配。
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

不,没有区别,因为与C相反,Go明确声明可以提供一个指向本地创建的变量的指针。

文档中

注意,与C语言不同,完全可以返回局部变量的地址。函数返回后,与变量关联的存储仍然存在


查看完整回答
反对 回复 2021-05-17
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

两者都应表示相同的指针,该指针指向使用相同默认值初始化的相同对象。

规范确实提到:

type T struct { i int; f float64; next *T }

t := new(T)

以下内容成立:


t.i == 0

t.f == 0.0

t.next == nil

之后也是如此


var t T

还:

取一个复合文字的地址(地址运算符)会生成一个指向该文字值的唯一实例的指针。

var pointer *Point3D = &Point3D{y: 1000}


查看完整回答
反对 回复 2021-05-17
  • 2 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

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