【发布时间】:2012-06-11 20:13:50
【问题描述】:
我正在学习 Go,但对于何时使用指针有点困惑。具体来说,从函数返回struct时,什么时候返回struct实例本身合适,什么时候返回struct的指针合适?
示例代码:
type Car struct {
make string
model string
}
func Whatever() {
var car Car
car := Car{"honda", "civic"}
// ...
return car
}
在哪些情况下我想要返回指针,而我不想想要返回指针?有没有好的经验法则?
【问题讨论】:
-
同样的规则不适用吗?
-
不,不同语言的不同规则。每种语言都有它的警告,我个人不知道 Go,所以我不能代表它,但我知道在 C 中,返回指向分配在堆栈上的对象的指针是一个巨大的禁忌。
-
我对答案感到不安:我认为灰色区域与小物体的性能有关,我认为除了分析之外无法估计最快的解决方案。传递小于 64 位的值对象是否会更快?