在大多数golang代码库中,我看,人们通过引用使用类型:
type Foo struct {}
myFoo := &Foo{}
我通常采用相反的方法,将所有内容作为副本传递,并且仅当我想对值执行破坏性操作时才通过引用传递,这使我能够轻松地发现破坏性函数(这是非常罕见的)。
但是看看参考文献是如何普遍存在的,我想这不仅仅是品味问题。我到达那里是重复价值的代价,这是一个改变游戏规则的东西吗?或者还有其他原因可以推荐参考文献吗?
如果有人能指出我关于为什么推荐参考的文章或文档,那就太棒了。
谢谢!
答案 0 :(得分:1)
Go是值传递的。我尝试尽可能多地使用像你的例子中的引用来消除思考不重复对象的思维过程。 Go主要用于网络和缩放,这使性能成为优先事项。正如你所说,接收方法可能会破坏指针指向的对象。
否则,您没有应该使用的规则。两者都很好。
此外,与Go文档中的问题有些相关:Pointers vs. Values