go語言yaml轉(zhuǎn)map、map遍歷的實現(xiàn)
yaml文件內(nèi)容
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
示例代碼:實現(xiàn)了base64 編解碼、yaml轉(zhuǎn)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文件內(nèi)容轉(zhuǎn)換成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)
}
}
}
}
}
}
}
}
結(jié)果
encodeString = "YXBpVmVyc2lvbjogcG9saWN5L3YxYmV0YTEKa2luZDogUG9kU2VjdXJpdHlQb2xpY3kKbWV0YWRhdGE6CiAgbmFtZTogbXlzcWwtc25hcHNob3QKc3BlYzogCiAgcHJpdmlsZWdlZDogZmFsc2UKICBhbGxvd1ByaXZpbGVnZUVzY2FsYXRpb246IGZhbHNlCiAgdm9sdW1lczoKICAtICIqIgogIGhvc3ROZXR3b3JrOiBmYWxzZQogIGhvc3RJUEM6IGZhbHNlCiAgaG9zdFBJRDogZmFsc2UKICBydW5Bc1VzZXI6CiAgICBydWxlOiBSdW5Bc0FueQogIHNlTGludXg6CiAgICBydWxlOiBSdW5Bc0FueQogIHN1cHBsZW1lbnRhbEdyb3VwczoKICAgIHJ1bGU6IFJ1bkFzQW55CiAgZnNHcm91cDoKICAgIHJ1bGU6IFJ1bkFzQW55Cg=="
value=mysql-snapshot
到此這篇關(guān)于go語言yaml轉(zhuǎn)map、map遍歷的實現(xiàn)的文章就介紹到這了,更多相關(guān)go語言yaml轉(zhuǎn)map、map遍歷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
GO語言中創(chuàng)建切片的三種實現(xiàn)方式
這篇文章主要介紹了GO語言中創(chuàng)建切片的三種實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
golang中的io.ReadCloser與ioutil.NopCloser使用
這篇文章主要介紹了golang中的io.ReadCloser與ioutil.NopCloser使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
golang 40行代碼實現(xiàn)通用協(xié)程池
golang協(xié)程機(jī)制很方便的解決了并發(fā)編程的問題,但是協(xié)程并不是沒有開銷的,所以也需要適當(dāng)限制一下數(shù)量。這篇文章主要介紹了golang 40行代碼實現(xiàn)通用協(xié)程池,需要的朋友可以參考下2018-08-08

