关于 make(map[string]interface{}) 的一点疑问

Jaxon · · 2527 次点击
<a href="/user/jan-bar" title="@jan-bar">@jan-bar</a> 非常感谢你!
#2
更多评论
jan-bar
想要拥有,必定付出。
```go package main import &#34;fmt&#34; func main() { phone := []string{&#34;1590183&#34;, &#34;1887505&#34;} result := make(map[string]interface{}) doc := make(map[string]string) for _, v := range phone { doc[&#34;mobilenumber&#34;] = v result[doc[&#34;mobilenumber&#34;]] = doc doc = make(map[string]string) // 重新产生doc对象 } fmt.Println(result) } ``` 我上面这个测试例子多了一个重新产生doc的步骤。 你的问题就是doc是一个对象,虽然循环内的时候doc是没有问题的,但是赋值给result的永远都是最后一次的对象数据 我上面的写法是在用完doc之后重新产生一个新的doc对象。 实际应用中不应该像那那样写,在循环内部就应当将数据转给别的对象赋值给循环外面的对象,而不是复用循环中的对象。 这一块你可以多多练习一下额。
#1