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

songday · 2020年05月07日 · 最后由 h12 回复于 2020年05月09日 · 309 次阅读

大家好。

我在本站搜索了下,没有搜到相关内容,所以开贴问一下。

以前都是返回的指针:

func getItem(itemId int) *model.Item {
  i := model.item{}
  i.Name = "abc"
  return &i
}

会逃逸到堆上

如果上面的方法,直接返回:model.Item,是会发生栈拷贝吧?

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

我一般直接用命名返回值,然后在函数内部通过指针去设置值。

package main
import(
    "fmt"
)
type Student struct{
    Name string 
    Age int
}

func getItem()(stu Student){
    var s=&stu 
    s.Name="jemy"
    s.Age=20
    return 
}

func main(){
    s:=getItem()
    fmt.Println(s.Name,s.Age)
}
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册