Go 为什么解码返回结果为空
我有下面的代码,我想将yaml转换为客户机go数据结构,并从中获取对象名Go 为什么解码返回结果为空,go,kubernetes,Go,Kubernetes,我有下面的代码,我想将yaml转换为客户机go数据结构,并从中获取对象名 package main import ( "fmt" "k8s.io/api/extensions/v1beta1" "k8s.io/client-go/kubernetes/scheme" ) var yml = ` apiVersion: extensions/v1beta1 kind: Deployment metadata: name: testnginx replicas: 1 spec:
package main
import (
"fmt"
"k8s.io/api/extensions/v1beta1"
"k8s.io/client-go/kubernetes/scheme"
)
var yml = `
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: testnginx
replicas: 1
spec:
template:
metadata:
labels:
run: testnginx
spec:
containers:
- image: nginx
name: testnginx
ports:
- containerPort: 8080
`
func main() {
decode := scheme.Codecs.UniversalDeserializer().Decode
obj, _, err := decode([]byte(yml), nil, nil)
if err != nil {
fmt.Printf("%#v", err)
}
//fmt.Printf("%#v\n", obj)
deployment := obj.(*v1beta1.Deployment)
fmt.Printf("%#v\n", deployment.ObjectMeta.Name)
}
返回结果假定为testnginx,但为空
$ ./decode-k8s-exercise
""
不知道为什么。谢谢问题出在yaml中。名称字段应该是元数据中的一个属性,但它们当前处于同一级别。如果将名称用空格缩进,则其工作原理应与稍后应用于模板的相同。relicas也应符合规范:
问题出在yaml中。名称字段应该是元数据中的一个属性,但它们当前处于同一级别。如果将名称用空格缩进,则其工作原理应与稍后应用于模板的相同。relicas也应符合规范:
var yml = `
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: testnginx
spec:
replicas: 1
template:
metadata:
labels:
run: testnginx
spec:
containers:
- image: nginx
name: testnginx
ports:
- containerPort: 8080
`