在Golang中添加项目以映射到struct中

时间:2018-02-14 23:55:02

标签: go

我定义了这样的结构。

type Pages struct {
  Items []map[string]string
}

在for循环中,我使用var item = make(map[string]string)创建项目。

完整代码

pages := Pages{}
for _, partitionKey := range keys {
    fields, err := redis.Strings(conn.Do("hgetall", partitionKey))
    if err == nil {
        var item = make(map[string]string)
        item["id"] = strings.Replace(partitionKey, "pages:", "", -1)
        for i := 0; i < len(fields); i += 2 {
            key, _ := redis.String(fields[i], nil)
            value, _ := redis.String(fields[i+1], nil)
            item[key] = value
        }
        fmt.Println("\n", item)
        // this does not work
        //append(pages.Items, item)
    }
}

fmt.Println(pages)

如何将新创建的项目添加到Pages结构中的Items数组?

基于以下答案的解决方案。

type Pages struct {
    Items []map[string]string `json:"items"`
}

pages := Pages{}
for _, partitionKey := range keys {
    item, err := redis.StringMap(conn.Do("hgetall", partitionKey))
    if err == nil {
        item["id"] = strings.Replace(partitionKey, "pages:", "", -1)
        pages.Items = append(pages.Items, item)
    }
}

1 个答案:

答案 0 :(得分:1)

pages.Items = append(pages.Items, item)