go - 关于 golang 中的 `&MyType{}` 模式的任何文档/文章?

标签 go

在我看到的大多数 golang 代码库中,人们通过引用使用类型:

type Foo struct {}
myFoo := &Foo{}

我通常采用相反的方法,将所有内容作为副本传递,并且仅在我想对值执行破坏性操作时才通过引用传递,这使我能够轻松发现破坏性函数(这种情况相当罕见)。

但是看到引用是多么司空见惯,我想这不仅仅是一个品味问题。我知道复制值(value)是有代价的,这会改变游戏规则吗?还是有其他原因首选引用文献?

如果有人能给我指点一篇关于为什么首选引用文献的文章或文档,那就太好了。

谢谢!

最佳答案

Go 是按值传递的。我尝试尽可能多地使用您的示例中的引用,以消除考虑不复制对象的心理过程。 Go 主要用于网络和扩展,这使得性能成为重中之重。正如您所说,这样做的明显缺点是,接收方法会破坏指针指向的对象。

否则没有关于您应该使用哪个的规则。两者都很好。

此外,与 Go 文档中的问题有些相关:Pointers vs. Values

关于go - 关于 golang 中的 `&MyType{}` 模式的任何文档/文章?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40175001/

相关文章:

mongodb - time.Duration 出乎意料地是 'divided' by 1'000' 000

go - 访问基准测试结果

go - 根据其他条件设置变量

go - 是否有可能说服 Golang 编译器接受 `type Foo int` 作为 `int` ?

go - 使用此代码您如何知道是否会使用 sha256 或 sha512?

golang 在 1 秒内每 1 毫秒执行一次函数(每秒调用 1000 次)

Go: 无效操作 - 类型 *map[key]value 不支持索引

go - 并发快速排序

go - 消失的结构组件的赋值

go - 在 Golang 中创建数组文字数组