为了账号安全,请及时绑定邮箱和手机立即绑定

去:我创造了太多价值吗?

去:我创造了太多价值吗?

Go
德玛西亚99 2021-05-03 16:52:30
如果我有这样的结构type myStruct struct {    mystring string    myint int}如果我有一个函数返回这样的新myStructfunc New() myStruct {    s := myStruct{}    s.mystring = "string"    s.myint = 1    return s}因为我先将它存储在“ s”变量中,然后返回它,所以我的函数实际上是2个myStruct值而不是1个吗?如果是这样,那么确保我不首先将其存储在变量中是否是更好的做法?
查看完整描述

3 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

我绝对不是Go专家(甚至不是新手:)),但是正如@ max.haredoom所述,您可以在函数签名本身中分配变量。这样,您也可以在s中省略return:


package main


import "fmt"


type myStruct struct {

    mystring string

    myint    int

}


func New() (s myStruct) {

    s.mystring = "string"

    s.myint = 1


    return

}


func main() {

    r := New()

    fmt.Println(r)

}


// Outputs {string 1}

在我在Effective Go中遇到的示例中,它似乎确实是这种性质的最常见的处理方法,但是同样,我绝对不是该主题的权威(并且会寻找有关实际操作的其他信息)。表现)。


查看完整回答
反对 回复 2021-05-24
  • 3 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信