猿问

初始化嵌套结构定义

你如何初始化以下结构?


type Sender struct {

    BankCode string

    Name     string

    Contact  struct {

        Name    string

        Phone   string

    }

}

我试过:


s := &Sender{

        BankCode: "BC",

        Name:     "NAME",

        Contact {

            Name: "NAME",

            Phone: "PHONE",

        },

    }

没有用:


mixture of field:value and value initializers

undefined: Contact

我试过:


s := &Sender{

        BankCode: "BC",

        Name:     "NAME",

        Contact: Contact {

            Name: "NAME",

            Phone: "PHONE",

        },

    }

没有用:


undefined: Contact


哈士奇WWW
浏览 200回答 3
3回答

MMTTMM

你Contact是一个匿名结构类型的字段。因此,您必须重复类型定义:s := &Sender{    BankCode: "BC",    Name:     "NAME",    Contact: struct {        Name  string        Phone string    }{        Name:  "NAME",        Phone: "PHONE",    },}但在大多数情况下,最好像 rob74 建议的那样定义一个单独的类型。

九州编程

分别定义两个结构体,然后在“Sender”中嵌入“Contact”怎么样?type Sender struct {    BankCode string    Name     string    Contact}type Contact struct {    Name  string    Phone string}如果您这样做,您的第二次初始化尝试将起作用。此外,您可以单独使用“联系人”。如果你真的想使用嵌套的结构,你可以使用Ainar-G的答案,但这个版本是不漂亮(和它会变得丑陋,如果结构进行了深入的嵌套,如图所示这里),所以我不会做如果可以避免的话。

海绵宝宝撒

type NameType struct {    First string    Last  string}type UserType struct {    NameType    Username string}user := UserType{NameType{"Eduardo", "Nunes"}, "esnunes"}// oruser := UserType{    NameType: NameType{        First: "Eduardo",        Last:  "Nunes",    },    Username: "esnunes",}
随时随地看视频慕课网APP

相关分类

Go
我要回答