大家帮我看一下,我是新手菜鸡,应该是我理解不到位,求解惑,感谢!

chyuhung · · 1352 次点击
servers = append(servers, server) 这个数组里面的元素都是同一个server,所以你修改都是修改同一个 server你要在循环里每次都make出来
#1
更多评论
func New() *[]map[string]string { servers := make([]map[string]string, 0) for i := 0; i < 5; i++ { server := make(map[string]string) server["name"] = "server" + string(i) server["type"] = "machine" servers = append(servers, server) } return &servers }
#2
楼上说的对,循环中每次修改map都把底层的map修改了,即便已经append进入切片中。比如第一次map是张三,第二次李四,实际将map改为了李四,切片中也变为两个李四了。
#3