我想將我的~/.kube/config文件解組為一個go結(jié)構(gòu)。我正在使用以下方法func ListContexts(pathToKubeConfig string) ([]string, error) { type Contexts struct { Ctx []string `yaml:"contexts"` //ApiVersion string `yaml:"apiVersion"` } var ctx []string var c Contexts file, err := ioutil.ReadFile(pathToKubeConfig) if err != nil { return nil, err } err = yaml.Unmarshal(file, &c) fmt.Printf("%#v\n", c.Ctx) return ctx, nil}}眾所周知,kubeconfig 文件具有以下結(jié)構(gòu):apiVersion: v1. . . contexts:- context: cluster: cluster1 user: user1 name: context1- context: cluster: cluster2 user: user2 name: context2我的方法是打印:[]string(nil)既然context是 yaml 數(shù)組,為什么我映射到字符串?dāng)?shù)組時不起作用?當(dāng)我取消注釋ApiVersion我的結(jié)構(gòu)字段并嘗試打印它時,它可以工作。
1 回答

慕無忌1623718
TA貢獻(xiàn)1744條經(jīng)驗 獲得超4個贊
context是一個數(shù)組,但不是字符串?dāng)?shù)組。要么[]map[string]interface{}用于上下文,要么將上下文定義為結(jié)構(gòu),并使用其數(shù)組:
type context struct {
Cluster string `yaml:"cluster"`
...
}
type contexts struct {
Contexts []context `yaml:"contexts"`
}
- 1 回答
- 0 關(guān)注
- 140 瀏覽
添加回答
舉報
0/150
提交
取消