這篇文章主要為大家展示了“go語言如何實現yaml轉map、map遍歷”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“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
以上是“go語言如何實現yaml轉map、map遍歷”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。