首先,希望问题的标题是有意义的(随意建议编辑)。我以前从未处理过手动指针,只是学习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
是什么?很可能是一个结构,或者可能是一个接口或可能是任何东西(我知道某些组件,如地图,字符串,函数,结构等,默认情况下通过引用传递。但我仍然想知道那些组件是不是)。
答案 0 :(得分:2)
如果Errors
位于*thing
for err := range thing.Errors() { ... }
,那么您可以使用build.gradle
。
因为the method set,问题中的两个片段与我在此答案中的建议之间的表现应该没有差异。