我从MySQL里面查询到一个结构体数组,然后把结构体遍历存到map里面去,接着在把map存到数组里面去,结果我发现存出来的数据怎么都是重复的,通过下标和append都不好使,好奇怪?
代码如下所示
func (this *Admin_Usre) Tojsons(user []Admin_Usre) []map[string]interface{} {
data:=make(map[string]interface{})
res:=make([]map[string]interface{},len(user))
for i:=0;i<len(user);i++{
data["id"]=user[i].ID
data["username"]=user[i].Username
data["nickname"]=user[i].Nickname
data["createdat"]=user[i].CreatedAt
if i==0{
print("进来了")
res[0]=data
}
if i==1{
res[1]=data
}
if i==2{
res[2]=data
}
fmt.Println(data)
fmt.Println(i)
fmt.Println(res)
}
return res
}
打印结果如下所示:
进来了map[createdat:2020-02-29 21:24:17 +0800 CST id:1 nickname: username:wzt]
0
[map[createdat:2020-02-29 21:24:17 +0800 CST id:1 nickname: username:wzt] map[] map[] map[] map[] map[] map[] map[] map[] map[]]
map[createdat:2020-02-29 21:38:30 +0800 CST id:2 nickname: username:wzt]
1
[map[createdat:2020-02-29 21:38:30 +0800 CST id:2 nickname: username:wzt] map[createdat:2020-02-29 21:38:30 +0800 CST id:2 nickname: username:wzt] map[] map[] map[] map[] map[] map[] map[] map[]]
map[createdat:2020-03-04 21:53:16 +0800 CST id:3 nickname: username:]
2
[map[createdat:2020-03-04 21:53:16 +0800 CST id:3 nickname: username:] map[createdat:2020-03-04 21:53:16 +0800 CST id:3 nickname: username:] map[createdat:2020-03-04 21:53:16 +0800 CST id:3 nickname: userna
me:] map[] map[] map[] map[] map[] map[] map[]]
map[createdat:2020-03-04 21:54:57 +0800 CST id:4 nickname: username:]
3
[map[createdat:2020-03-04 21:54:57 +0800 CST id:4 nickname: username:] map[createdat:2020-03-04 21:54:57 +0800 CST id:4 nickname: username:] map[createdat:2020-03-04 21:54:57 +0800 CST id:4 nickname: userna
me:] map[] map[] map[] map[] map[] map[] map[]]
map[createdat:2020-03-04 21:55:38 +0800 CST id:5 nickname: username:]
4
[map[createdat:2020-03-04 21:55:38 +0800 CST id:5 nickname: username:] map[createdat:2020-03-04 21:55:38 +0800 CST id:5 nickname: username:] map[createdat:2020-03-04 21:55:38 +0800 CST id:5 nickname: userna
me:] map[] map[] map[] map[] map[] map[] map[]]
map[createdat:2020-03-04 21:56:18 +0800 CST id:6 nickname: username:]
5
[map[createdat:2020-03-04 21:56:18 +0800 CST id:6 nickname: username:] map[createdat:2020-03-04 21:56:18 +0800 CST id:6 nickname: username:] map[createdat:2020-03-04 21:56:18 +0800 CST id:6 nickname: userna
me:] map[] map[] map[] map[] map[] map[] map[]]
map[createdat:2020-03-04 21:59:52 +0800 CST id:7 nickname: username:]
6
[map[createdat:2020-03-04 21:59:52 +0800 CST id:7 nickname: username:] map[createdat:2020-03-04 21:59:52 +0800 CST id:7 nickname: username:] map[createdat:2020-03-04 21:59:52 +0800 CST id:7 nickname: userna
me:] map[] map[] map[] map[] map[] map[] map[]]
map[createdat:2020-03-04 22:00:33 +0800 CST id:8 nickname: username:]
7
[map[createdat:2020-03-04 22:00:33 +0800 CST id:8 nickname: username:] map[createdat:2020-03-04 22:00:33 +0800 CST id:8 nickname: username:] map[createdat:2020-03-04 22:00:33 +0800 CST id:8 nickname: userna
me:] map[] map[] map[] map[] map[] map[] map[]]
map[createdat:2020-03-04 22:03:52 +0800 CST id:9 nickname: username:]
8
[map[createdat:2020-03-04 22:03:52 +0800 CST id:9 nickname: username:] map[createdat:2020-03-04 22:03:52 +0800 CST id:9 nickname: username:] map[createdat:2020-03-04 22:03:52 +0800 CST id:9 nickname: userna
me:] map[] map[] map[] map[] map[] map[] map[]]
map[createdat:2020-03-04 22:06:32 +0800 CST id:10 nickname: username:]
9
[map[createdat:2020-03-04 22:06:32 +0800 CST id:10 nickname: username:] map[createdat:2020-03-04 22:06:32 +0800 CST id:10 nickname: username:] map[createdat:2020-03-04 22:06:32 +0800 CST id:10 nickname: use
rname:] map[] map[] map[] map[] map[] map[] map[]]
结果就是这样的 我用append也是一样的
第一次map中的数据id为1
数组存入了1条id为1的数据
第二次map中的数据id为2
数组存入了2条id为2的数据
第三次map中的数据id为3
数组存入了3条id为3的数据
以此类推下去
我很奇怪,当i等于1的时候都没有进入到i等于0这个if条件 它怎么会把数据为下标为0的这个数据给覆盖了