【发布时间】:2014-08-18 15:30:10
【问题描述】:
如果我有以下结构的实例
type Node struct {
id string
name string
address string
conn net.Conn
enc json.Encoder
dec json.Decoder
in chan *Command
out chan *Command
clients map[string]ClientNodesContainer
}
我不明白什么时候应该通过引用发送一个结构,什么时候应该通过值发送它(考虑到我不想对该实例进行任何更改),是否有一个经验法则可以使它更容易决定?
我所能找到的只是当结构很小或复制成本低廉时按值发送结构,但例如,小真的意味着小于 64 位地址吗?
如果有人能指出一些更明显的规则会很高兴
【问题讨论】:
-
我想知道的是stackoverflow.com/questions/23542989/…。至于什么是“大”,肯定是超过24字节(x64上一个slice header的大小,我们经常传值);代码审查 cmets 使用直观的经验法则“将所有字段作为参数传递会不会感觉很尴尬?”;我会说,粗略地说,如果你小于 64 字节(x64 上缓存行的大小)并且按值传递感觉还可以,那么不值得浪费性能(除非它是性能关键代码,在这种情况下测量它)。
标签: go