go語言yaml轉(zhuǎn)map、map遍歷的實(shí)現(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
示例代碼:實(shí)現(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遍歷的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)go語言yaml轉(zhuǎn)map、map遍歷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux系統(tǒng)下Go語言開發(fā)環(huán)境搭建
這篇文章主要介紹了Linux系統(tǒng)下Go開發(fā)環(huán)境搭建,需要的朋友可以參考下2022-04-04
Go遍歷struct,map,slice的實(shí)現(xiàn)
本文主要介紹了Go語言遍歷結(jié)構(gòu)體、切片和字典的方法,對大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
golang 實(shí)現(xiàn)每隔幾分鐘執(zhí)行一個函數(shù)
這篇文章主要介紹了golang 實(shí)現(xiàn)每隔幾分鐘執(zhí)行一個函數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
golang 微服務(wù)之gRPC與Protobuf的使用
這篇文章主要介紹了golang 微服務(wù)之gRPC與Protobuf的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02

