网络编程
位置:首页>> 网络编程>> Go语言>> go语言yaml转map、map遍历的实现

go语言yaml转map、map遍历的实现

作者:lemom啊  发布时间:2024-05-25 15:19:52 

标签:go语言,yaml,map,map遍历

yaml文件内容


apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
 name: mysql-snapshot
spec:
 privileged: false
 allowPrivilegeEscalation: false
 volumes:
 - "*"
 hostNetwork: false
 hostIPC: false
 hostPID: false
 runAsUser:
   rule: RunAsAny
 seLinux:
   rule: RunAsAny
 supplementalGroups:
   rule: RunAsAny
 fsGroup:
   rule: RunAsAny

示例代码:实现了base64 编解码、yaml转map、以及map遍历


func main() {
f, err := os.Open("cmd/test.yaml")
if err != nil {
 log.Fatalln(err)
 return
}

input, _ := ioutil.ReadAll(f)
// base64 编码
encodeString := base64.StdEncoding.EncodeToString(input)
fmt.Println(encodeString)

// base64 解码
decodeBytes, err := base64.StdEncoding.DecodeString(encodeString)
if err != nil {
 log.Fatalln(err)
}

//yaml文件内容转换成map[interface{}]interface{})

resultMap := make(map[interface{}]interface{})
if err := yaml.Unmarshal(decodeBytes, &resultMap); err != nil {
 // error handling
 log.Fatalln(err)

}

// 遍历map ,此处取metadata.name值
for key, value := range resultMap {
 switch key := key.(type) {
 case string:
  if key == "metadata" {
   switch value := value.(type) {
   case string:
   case map[interface{}]interface{}:
    for k, v := range value {
     switch k.(type) {
     case string:
       if k == "name" {
        fmt.Println("value=", v)
       }
     }
    }

}

}
 }
}
}

结果

encodeString = "YXBpVmVyc2lvbjogcG9saWN5L3YxYmV0YTEKa2luZDogUG9kU2VjdXJpdHlQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbXlzcWwtc25hcHNob3QKc3BlYzogCiAgcHJpdmlsZWdlZDogZmFsc2UKICBhbGxvd1ByaXZpbGVnZUVzY2FsYXRpb246IGZhbHNlCiAgdm9sdW1lczoKICAtICIqIgogIGhvc3ROZXR3b3JrOiBmYWxzZQogIGhvc3RJUEM6IGZhbHNlCiAgaG9zdFBJRDogZmFsc2UKICBydW5Bc1VzZXI6CiAgICBydWxlOiBSdW5Bc0FueQogIHNlTGludXg6CiAgICBydWxlOiBSdW5Bc0FueQogIHN1cHBsZW1lbnRhbEdyb3VwczoKICAgIHJ1bGU6IFJ1bkFzQW55CiAgZnNHcm91cDoKICAgIHJ1bGU6IFJ1bkFzQW55Cg=="

value=mysql-snapshot

来源:https://blog.csdn.net/qq_22143251/article/details/110430886

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com