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

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

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

Go
ITMISS 2023-07-04 17:04:09
我已经像下面这样定义了我的结构: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
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

如果您以您所做的方式声明结构(嵌套结构而不创建新类型),则在文字中使用它们会很复杂,因为您需要重复结构定义。


你将被迫像这样使用它:


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"} },

}


查看完整回答
反对 回复 2023-07-04
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

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