问题描述

一直在纠结 Golang func 到底是该用值返回还是指针返回
大家都了解,golang 的 func 如果设计成指针返回会存在逃逸,并将变量分配在堆上,而值返回则分配在栈上
栈是廉价的 堆是昂贵的
但是在写一些业务场景时 指针的非空判断以及整个大的struct避免拷贝都是非常友好的
所以很纠结设计思想到底是值返回还是指针返回呢?

示例

type Ex struct {
    A string
    B int
}

func Rv() Ex {
    return Ex{}
}

func Rp() *Ex {
    return &Ex{}
}