簡體   English   中英

將值傳遞給struct時“復合文字中缺少類型”

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM