Golang for range 取出数据时数据重复

由于保存数据时用json.Marshal(string)处理后保存,取出后需要进行json.Unmarshal([]byte,&str)

var message MsgPacket
for _, value := range chats {   
        err = json.Unmarshal([]byte(value.Msg),&message)
        if err != nil {
            logs.Error("GetUsersPrivateChats","err = ",err)
        }
        message.Data["send_time"] = value.SendTime
        msg = append(msg,message)
    }

因为用到了&message所以数据都保存在了地址里面,每遍历一次更新一次内容到地址,
所以最后的切片内容都一样(因为每一个切片的地址都是一样的)
正确写法如下

for _, value := range chats {   
         var message MsgPacket
        err = json.Unmarshal([]byte(value.Msg),&message)
        if err != nil {
            logs.Error("GetUsersPrivateChats","err = ",err)
        }
        message.Data["send_time"] = value.SendTime
        msg = append(msg,message)
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容