go - 将值传递给结构时“复合文字中缺少类型”
问题描述
我在下面定义了这样的结构:
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
解决方案
如果您以您所做的方式声明结构(嵌套结构而不创建新类型),则在文字中使用它们会很复杂,因为您需要重复结构定义。
您将被迫像这样使用它:
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"} },
}
推荐阅读
- python - Python - Django 通过 gunicorn 进程持久化存储
- python - 图像旋转:如何取非方阵的逆?
- javascript - P5.js 中的箭头线刷
- reactjs - 反应调用 api 不确定
- android - Android中的App Force关闭和val Null指针异常
- ios - 共享组件无法识别设备语言
- angular - Angular/Amplify 订阅中的连接/套接字超时
- powershell - 如何比较 2 个 PDF 文件
- kubernetes-helm - Helm - 来自值的多个 ConfigMap
- socket.io - 如何让自定义节点服务器上的 socket.io 接受 CORS 请求?