go - 初始化嵌套结构图

标签 go struct

问题:

我在另一个结构中有一个结构映射,我想初始化结构的嵌套映射,但显然这是不可能的。

代码:

type Exporter struct {
    TopicsByName      map[string]Topic
}

type Topic struct {
    Name       string
    Partitions map[int32]Partition
}

type Partition struct {
    PartitionID   int32
    HighWaterMark int64
}

// Eventually I want to do something like:
e := Exporter{ TopicsByName: make(map[string]Topic) }
for _, topicName := range topicNames {
  // This does not work because "cannot assign to struct field e.TopicsByName[topicName].Partitions in map"
  e.TopicsByName[topicName].Partitions = make(map[int32]Partition)
}

// I wanted to initialize all these maps so that I can do
e.TopicsByName[x.TopicName].Partitions[x.PartitionID] = Partition{...}

我不明白为什么我无法初始化上面的嵌套结构映射。嵌套以结构体为值的 map 有那么糟糕吗?我该如何解决这个问题?

最佳答案

无法分配给映射值中的字段。解决方法是 将结构值分配给映射值:

for _, topicName := range []string{"a"} {
    e.TopicsByName[topicName] = Topic{Partitions: make(map[int32]Partition)}
}

关于go - 初始化嵌套结构图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54465169/

相关文章:

c++ - 无法将新对象分配给 cpp 中的指针指针类型

C - 将信息传输到结构(特别是字符串数组)

go - 将缓冲区写入文件不会返回错误,那么为什么文件后记为空?

go - 是否可以将多个包裹的覆盖范围发布到工作服?

object - Julia 中的内部构造函数

c - #Pragma pack 编译时发出警告

c++ - 如何将结构作为键插入 map ?

go - 获取语​​法错误 : unexpected comma, 期待 {

go - goroutines之间的死锁

go - 为sql.DB的Query方法的返回类型实现一个接口(interface)