在我看到的大多数 golang 代码库中,人们通过引用使用类型:
type Foo struct {}
myFoo := &Foo{}
我通常采用相反的方法,将所有内容作为副本传递,并且仅在我想对值执行破坏性操作时才通过引用传递,这使我能够轻松发现破坏性函数(这种情况相当罕见)。
但是看到引用是多么司空见惯,我想这不仅仅是一个品味问题。我知道复制值(value)是有代价的,这会改变游戏规则吗?还是有其他原因首选引用文献?
如果有人能给我指点一篇关于为什么首选引用文献的文章或文档,那就太好了。
谢谢!
最佳答案
Go 是按值传递的。我尝试尽可能多地使用您的示例中的引用,以消除考虑不复制对象的心理过程。 Go 主要用于网络和扩展,这使得性能成为重中之重。正如您所说,这样做的明显缺点是,接收方法会破坏指针指向的对象。
否则没有关于您应该使用哪个的规则。两者都很好。
此外,与 Go 文档中的问题有些相关:Pointers vs. Values
关于go - 关于 golang 中的 `&MyType{}` 模式的任何文档/文章?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40175001/