猿问

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

如果我有这样的结构


type myStruct struct {

    mystring string

    myint int

}

如果我有一个函数返回这样的新myStruct


func New() myStruct {

    s := myStruct{}


    s.mystring = "string"

    s.myint = 1


    return s

}

因为我先将它存储在“ s”变量中,然后返回它,所以我的函数实际上是2个myStruct值而不是1个吗?


如果是这样,那么确保我不首先将其存储在变量中是否是更好的做法?


德玛西亚99
浏览 187回答 3
3回答

偶然的你

我绝对不是Go专家(甚至不是新手:)),但是正如@ max.haredoom所述,您可以在函数签名本身中分配变量。这样,您也可以在s中省略return:package mainimport "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中遇到的示例中,它似乎确实是这种性质的最常见的处理方法,但是同样,我绝对不是该主题的权威(并且会寻找有关实际操作的其他信息)。表现)。
随时随地看视频慕课网APP

相关分类

Go
我要回答