End*_*imo 11
即使答案已在上面的评论中给出,我将发布一个简短的例子,说明如何实现这一目标.
package main
import (
"fmt"
)
func main() {
result := []map[string]interface{}{}
mp1 := map[string]interface{}{
"one" : 1,
"two" : 2,
}
mp2 := map[string]interface{}{
"three" : 3,
"four" : 4,
}
mp3 := make(map[string]interface{})
for k, v := range mp1 {
if _, ok := mp1[k]; ok {
mp3[k] = v
}
}
for k, v := range mp2 {
if _, ok := mp2[k]; ok {
mp3[k] = v
}
}
result = append(result, mp1, mp2)
fmt.Println(result)
}
Run Code Online (Sandbox Code Playgroud)
输出将是:
[map[one:1 two:2] map[three:3 four:4]]
Run Code Online (Sandbox Code Playgroud)
另一个答案是正确的.您还可以编写辅助函数以避免重复的映射合并.
// overwriting duplicate keys, you should handle that if there is a need
func mergeMaps(maps ...map[string]interface{}) map[string]interface{} {
result := make(map[string]interface{})
for _, m := range maps {
for k, v := range m {
result[k] = v
}
}
return result
}
func main() {
log.Println(`started`)
v := []map[string]interface{}{
map[string]interface{}{
`one`: 1,
`two`: 2,
},
map[string]interface{}{
`one`: `I`,
`three`: 3,
`other`: `NAN`,
},
map[string]interface{}{
`name`: `Bob`,
`age`: 300,
},
}
m := mergeMaps(v...)
log.Println(m, len(m))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9380 次 |
| 最近记录: |