举个例子:
type Foo struct {
num int
}
// func NewFoo() *Foo { // returning a pointer
// return &Foo{33}
// }
func NewFoo() Foo { // NOT returning a pointer
return Foo{33}
}
func main() {
fff := NewFoo()
fmt.Printf("%d\n", fff.num)
}
如果NewFoo返回一个指针,我知道该对象保存在堆中,并fff接收指向同一堆分配对象的指针。
现在,第二个实现NewFoo
不会返回指针,Go 会返回堆栈分配结构的副本,还是会发生类似C++ 的 RVO 的情况?
慕工程0101907
相关分类