我想将我的~/.kube/config文件解组为一个go结构。我正在使用以下方法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 文件具有以下结构:apiVersion: v1. . . contexts:- context: cluster: cluster1 user: user1 name: context1- context: cluster: cluster2 user: user2 name: context2我的方法是打印:[]string(nil)既然context是 yaml 数组,为什么我映射到字符串数组时不起作用?当我取消注释ApiVersion我的结构字段并尝试打印它时,它可以工作。
1 回答

慕无忌1623718
TA贡献1744条经验 获得超4个赞
context是一个数组,但不是字符串数组。要么[]map[string]interface{}用于上下文,要么将上下文定义为结构,并使用其数组:
type context struct {
Cluster string `yaml:"cluster"`
...
}
type contexts struct {
Contexts []context `yaml:"contexts"`
}
- 1 回答
- 0 关注
- 123 浏览
添加回答
举报
0/150
提交
取消