将值传递给结构时“复合文字中缺少类型”

我已经像下面这样定义了我的结构:


type S_LoginSuccessed struct {

    Code int `json:"code"`

    Data struct {

        User struct {

            Sex   string `json:"sex"`

            IsVip bool   `json:"is_vip"`

            Name  string `json:"name"`

        } `json:"user"`

    } `json:"data"`

    Timestamp int64  `json:"timestamp"`

    Message   string `json:"message"`

}

我用它来称呼它:


success_message := S_LoginSuccessed{123, {{"male", true, "123"}}, time.Now().Unix(), "123"}

我希望它会成功,但是 VSCode 却给了我这个错误:


missing type in composite literal



ITMISS
浏览 95回答 1
1回答

慕侠2389804

如果您以您所做的方式声明结构(嵌套结构而不创建新类型),则在文字中使用它们会很复杂,因为您需要重复结构定义。你将被迫像这样使用它:success_message := S_LoginSuccessed{    Code: 123,    Timestamp: time.Now().Unix(),    Message: "123",    Data: struct {        User struct {            Sex   string `json:"sex"`;            IsVip bool   `json:"is_vip"`;            Name  string `json:"name"`        }    }{User: struct {        Sex   string        IsVip bool        Name  string    }{Sex: "male", IsVip: true, Name: "123"}},}声明类型可能会更加模块化:type User struct {    Sex   string `json:"sex"`    IsVip bool   `json:"is_vip"`    Name  string `json:"name"`}type Data struct{    User User `json:"user"`}type S_LoginSuccessed struct {    Code int `json:"code"`    Data Data `json:"data"`    Timestamp int64  `json:"timestamp"`    Message   string `json:"message"`}然后像这样使用它:success_message := S_LoginSuccessed{    Code: 123,    Timestamp: time.Now().Unix(),    Message: "123",    Data: Data{ User: User{"male", true, "123"} },}
打开App,查看更多内容
随时随地看视频慕课网APP