Go语言 结构文字的decompression数组

ma8fv8wu  于 2023-11-14  发布在  Go
关注(0)|答案(2)|浏览(109)

我如何声明一个结构体字面量数组?
去:

type Ping struct {
    Content []aContent
}

type aContent struct {
    Type        string
    Id          string
    Created_at  int64
}

func main() {
    f := Ping{Content: []aContent{Type: "Hello", Id: "asdf"}}
    fmt.Println(f)
}

字符集
代码可以在这里找到:http://play.golang.org/p/-SyRw6dDUm

lndjwyie

lndjwyie1#

你只需要再戴一副牙套。

[]aContent{{Type: "Hello", Id: "asdf"}, {Type: "World", Id: "ghij"}}}
           ^                                                      ^
         here                                                    and here

字符集
这是数组的一对,数组中的每个结构都有一个。

db2dz4w8

db2dz4w82#

你实际上忘记了传递一个数组(如@nos所示),错误地传递了一个对象。我已经降低了作用域以更容易地显示它(the code is available here):

func main() {
    f := Ping {
        Content: []aContent { // 👈 Start declaring the array of `aContent`s

            { // 👈 Specify a single `aContent`
                Type: "Hello",
                Id:   "object1",
            },

            { // 👈 Specify another single `aContent` if needed
                Type: "World",
                Id:   "object2",
            },
            
        }, // 👈 End declaring the array of `aContent`s
    }
    fmt.Println(f)
}

字符集

使用更好的命名💡

我强烈建议使用更好的命名来减少歧义。例如,通过使用Contents(复数为s),您可以快速确定这是一个Array。您可以将结构命名为Content而不是aContent。(不需要额外的a来显示这是一个单一的对象)
所以重构后的版本是like this

相关问题