在 Golang 中,合并多个映射需要考虑所需结果映射的值类型,因为合并后的值可以包含与同一键关联的多个值。为此,建议使用切片作为结果映射的值类型。
要执行简单合并,提供的可以修改示例代码,将源映射中的值附加到与结果映射中相同键关联的切片:
<code class="go">func merge(ms ...map[string]string) map[string][]string { res := map[string][]string{} for _, m := range ms { for k, v := range m { res[k] = append(res[k], v) } } return res }</code>
在此示例中,ms 是一个可变参数,允许传递任意数量的映射到合并函数。
要过滤掉重复项并确保值在结果映射中仅列出一次,可以修改代码如下所示:
<code class="go">func merge(ms ...map[string]string) map[string][]string { res := map[string][]string{} for _, m := range ms { srcMap: for k, v := range m { // Check if (k,v) was added before: for _, v2 := range res[k] { if v == v2 { continue srcMap } } res[k] = append(res[k], v) } } return res }</code>
这里,在将值附加到结果映射之前,代码会检查之前是否已添加(键,值)对,以防止重复。
以上是如何在 Golang 中合并地图同时避免重复值?的详细内容。更多信息请关注PHP中文网其他相关文章!