刚学 `Golang` 不久,勿喷
对于使用 `make(map[string]interface{})` 获取值的问题:
```golang
func GetCellBatchLoc(phone []string) map[string]interface{} {
// 获取每个手机号的前 7 位,用以数据库数据查询
var phonesStd []string
for _, ph := range phone {
phonesStd = append(phonesStd, ph[:7])
}
result := make(map[string]interface{})
doc := make(map[string]string)
// 初始化 phone service 的 MGO IP 地址
mgo_utils.Init(config.MGO_IP_SUVDATA)
query := bson.M{"mobilenumber": bson.M{"$in": phonesStd}}
filter := bson.M{"_id": 0, "mobilearea": 1, "areacode": 1, "mobilenumber": 1}
docs := mgo_utils.FindAll(config.MGO_DB_SUVDATA, config.MGO_TABLE_DM_MOBILE, query, filter)
// 迭代获取每一条 MongoDB 数据
for docs.Next(&doc) {
// 屏幕输出 (1)
fmt.Println(doc["mobilenumber"], doc)
// 此处为发帖想问的问题
// 用 手机号前 7 位作为 key,map[string]string 作为 value
result[doc["mobilenumber"]] = doc
}
// 屏幕输出 (2)
for k, v := range result {
fmt.Println(k, " ", v)
}
return result
}
```
用两个手机号 `15901832427, 18875056308` 进行测试,注释里对应屏幕输出(1) (2),结果如下:
```
// 屏幕输出 (1) 结果
1590183 map[areacode:021 mobilearea:上海 上海 mobilenumber:1590183]
1887505 map[areacode:023 mobilearea:重庆 重庆 mobilenumber:1887505]
// 屏幕输出 (2) 结果
// 疑问在这里,value 值为什么相同
1590183 map[areacode:023 mobilearea:重庆 重庆 mobilenumber:1887505]
1887505 map[areacode:023 mobilearea:重庆 重庆 mobilenumber:1887505
```
新人,尝试用 `Go` 改写 `Python` 项目练手,发现了上面这个疑问。
自己初步猜测,应该是指针指向的原因,该怎么写可以保证返回结果 `value` 值不同。
有疑问加站长微信联系(非本文作者)