大家好。
我在本站搜索了下,没有搜到相关内容,所以开贴问一下。
以前都是返回的指针:
```
func getItem(itemId int) *model.Item {
i := model.item{}
i.Name = "abc"
return &i
}
```
这样会逃逸到堆上
如果上面的方法,直接返回:`model.Item`,是会发生栈拷贝吧?
请问哪种方式比较好?
建议基于你的需求做考虑:
1.认为它有必要常驻内存,或者在一段时间内(例如某个用户的特性)常驻 则考虑用指针
2.其他情况建议用值返回
ps:不要什么都依赖gc,在golang编程中,更多的考虑怎么减少gc
#6
更多评论
凡是struct我都返回指针。
连map和slice很多时候我都会返回指针(用type自定义一个类型,比如type xxxx *[]string)。
优点是以后如果重构,基本不会调整调用方的代码。
都用自动GC的语言了,不要过多考虑细节。
细节等具体业务跑起来根据实际情况再优化。
#1