【发布时间】:2018-08-13 20:35:03
【问题描述】:
首先,希望问题的标题有意义(请随时提出修改建议)。以前没手动处理过指针,刚学Go。
所以,正在做以下事情:
func something() {
something := *thing
go func() {
for err := range something.Errors() {
fmt.Println(err)
}
}()
}
...有任何优势:
func something() {
go func() {
for err := range (*thing).Errors() {
fmt.Println(err)
}
}()
}
请注意,我已经尝试在第二种情况下执行 *thing.Errors(),但它会给我错误,除非我在它周围加上大括号(这是可以理解的,因为 Errors() 方法不返回任何指针,我猜?)。
虽然这是我通常不会关心的微优化,但出于学习和好奇心的目的,第二种情况不会有更多的性能开销(因为它在每次迭代时都引用指针)?
你问thing 是什么?很可能是一个结构,或者可能是一个接口,也可能是任何东西(我知道某些组件,如映射、字符串、函数、结构等,默认情况下是通过引用传递的。但我仍然想知道那些组件不是)。
【问题讨论】: