duansen6750 2018-09-07 13:48
浏览 8
已采纳

如何在范围内将项目追加到地图? [关闭]

Example:

package main

import (
    "encoding/json"
    "fmt"
    "github.com/imdario/mergo"
)

func main() {
    var DATA []map[string]interface{}
    text := []byte(`[{"id":1,"test":1},{"id":2},{"id":3,"test":3},{"test":8}]`)
    err := json.Unmarshal(text, &DATA)
    if err != nil {
        fmt.Errorf("ERR: %s", err)
    }

    var STATE map[string]interface{}
    var newState []interface{}

    fmt.Println("DATA: ", DATA)

    for _, k := range DATA {
        if err := mergo.Merge(&STATE, k, mergo.WithOverride); err != nil {
            fmt.Errorf("Error merge new and old packets: %s", err)
        }
        fmt.Println("STATE: ", STATE)

        newState = append(newState, STATE)
    }

    fmt.Println(newState)

}

I get: [map[id:3 test:8] map[test:8 id:3] map[id:3 test:8] map[test:8 id:3]]
I want get [map[id:1 test:1] map[test:2 id:1] map[id:3 test:3] map[test:8 id:3]]

I can not understand why the last value falls into the data slice, and not what was at the time of writing

  • 写回答

1条回答 默认 最新

  • donglu953744 2018-09-10 09:27
    关注

    I realized what the problem is, I need to explicitly copy each value

    for key,value := range STATE {
        newState[i][key] = value
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 simulink单相桥式整流电路
  • ¥35 问问51单片机流水灯的代码该怎么写
  • ¥15 关于#百度#的问题:感觉已经将字体段落、字体、页边距、纸张大小、文档网络调成与论文模板一致,为什么黄色部分字体左右的间距还是不一样啊,求私信发文件接收看一下
  • ¥15 stata webuse报错
  • ¥15 TypeError: Cannot read properties of undefined (reading 'status')
  • ¥15 如何利用AI去除图片中的竹架子
  • ¥15 python 写个基金爬取的代码,自动卖出功能
  • ¥15 Linux系统启动不起来
  • ¥15 为什么运行仿真数码管不亮(语言-c语言)
  • ¥15 陈仁良《直升机飞行动力学》小扰动线化方程如何推导