问题描述
一直在纠结 Golang func 到底是该用值返回还是指针返回
大家都了解,golang 的 func 如果设计成指针返回会存在逃逸,并将变量分配在堆上,而值返回则分配在栈上
栈是廉价的 堆是昂贵的
但是在写一些业务场景时 指针的非空判断以及整个大的struct避免拷贝都是非常友好的
所以很纠结设计思想到底是值返回还是指针返回呢?
示例
type Ex struct {
A string
B int
}
func Rv() Ex {
return Ex{}
}
func Rp() *Ex {
return &Ex{}
}
传递的参数是指针
或者返回 interface{}