【发布时间】:2017-01-16 09:58:57
【问题描述】:
我正在使用 Golang,出于某种原因,我需要合并来自不同数据库查询的结果,所有这些结果都返回给我 []map[string]interface{}
我正在考虑追加,但如果这可能的话,它还不够清楚。
我正在查看的最终数据类型是什么?
显然,键为字符串的接口映射数组应该能够简单地“附加”(连接,如果可以的话)到另一个键为字符串的接口映射数组!
那么实现这一点的机制是什么?
【问题讨论】:
-
好吧,您可以迭代:
for k, v := range(map1) { map2[k] = v},但您需要确定发生密钥冲突时会发生什么。您可以通过v, ok := map2[k]; if !ok {...}进行检查 -
对不起,我错过了切片。你可以做
newslice := append(slice1, slice2...)看blog.golang.org/slices#TOC_10。 -
如果结果类型相同,你可以只追加结果 := append(result1, result2...) []map[string]interface{}
-
你是对的。我只是尝试了@Uvelichitel 所说的内容,并且不得不做两次(因为我有 3 个阵列),它就像一个魅力!我应该把它作为答案吗?
-
其实问题应该重写以匹配go的语法和能力。对于 question 和 go,切片中包含地图是无关紧要的。您可以对任何切片类型执行相同操作,例如
[]byte。这就是 go 的内部函数append的用途,也是它的文档记录方式(附加和复制切片)。