Go 方法返回的 struct,是指针还是直接返回比较好?

songday · · 5674 次点击
建议用指针。因为如果函数返回会执行栈上拷贝,在栈上去创建了一个新的对象。旧的对象就交给了gc了。这样从性能角度考虑,如果返回指针,只不过对象从栈上逃逸到了堆上了。没有去创建新的对象。也不许gc去处理旧的对象。
#7
更多评论
凡是struct我都返回指针。 连map和slice很多时候我都会返回指针(用type自定义一个类型,比如type xxxx *[]string)。 优点是以后如果重构,基本不会调整调用方的代码。 都用自动GC的语言了,不要过多考虑细节。 细节等具体业务跑起来根据实际情况再优化。
#1
建议指针。 至少代码层面判断空值好判断
#2