[英]“missing type in composite literal” when passing value to struct
我在下面定義了這樣的結構:
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"} },
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.