我仍然对为什么要new
加入Go 感到困惑。
当您要实例化结构时,您可以
t := Thing{}
您可以通过执行以下操作获取指向新实例的指针
t := &Thing{}
但是也有这种可能性:
t := new(Thing)
最后一个似乎与其他语言有些异。&Thing{}
就像new(Thing)
它一样简洁明了,它仅使用您经常在其他地方使用的结构。当您将其更改为&Thing{3}
或时, 它也可以扩展&Thing{Feets:7}
。
在我看来,使用补充关键字1代价很高,它使语言更加复杂,并增加了您必须了解的内容。它可能对新手来说掩盖了实例化一个结构的背后。
它还使另一个保留字。
那么背后的原因是new
什么?有时有用吗?我们应该使用它吗?
1:是的,我知道它不是语法级别的关键字,您可以对其进行阴影处理,但这并不会改变它对于合理的开发人员来说是保留字的事实。