登录
首页 >  Golang >  Go问答

比较和更新两个不同映射字符串接口的键在Golang中的方法

来源:stackoverflow

时间:2024-02-11 13:27:22 296浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《比较和更新两个不同映射字符串接口的键在Golang中的方法》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

将两个yaml文件解组到两个不同的映射后,我想比较两个映射的键(外部键和内部键,因为它是嵌套映射),以及第一个映射中是否存在任何键(外部或内部键)' configmap”并且在第二个地图“userconfigmap”中不存在,我想将该键附加到第二个地图中的正确位置。 尝试像这样迭代地图,但无法继续实施,因为我是 golang 新手。

for k, v := range configmap {
        for k1, v1 := range userconfigmap {
            if configmap[k] = userconfigmap[k1] {
                if configmap[k].(map[string]interface{})[v] = 
                userconfigmap[k1].(map[string]interface{})[v1] {

                }
                else {
                    userconfigmap[k1].append(v)
                }
            }
        }
    }

示例 yaml 文件 configmap yaml 文件:

config:
    test1: "test1"
    test2: "test2"
http_port: 30008
https_port: 32223

userconfigmap yaml 文件:

config:
    test1: "test1"
http_port: 30008
https_port: 32223

我使用映射字符串接口进行解组


正确答案


您可以使用 _ 检查 go 中是否存在地图键,found := map[key],如果不存在,则将该键添加到第二个地图:

for k1 := range configMap {
    if _, found := userconfigMap[k1]; !found {
        userconfigMap[k1] = configMap[k1]
    }
    if v, ok := configMap[k1].(map[string]interface{}); ok {
        if _, ok := userconfigMap[k1].(map[string]interface{}); !ok {
            log.Fatal("userconfigMap[" + k1 + "] is not a map[string]interface{}")
        }
        for k2 := range v {
            if _, found := userconfigMap[k1].(map[string]interface{})[k2]; !found {
                userconfigMap[k1].(map[string]interface{})[k2] = v[k2]
            }
        }
    }
}

本篇关于《比较和更新两个不同映射字符串接口的键在Golang中的方法》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>