猿问

从 Kubernetes 类型生成 YAML 清单

一种解决方案是使plus1函数成为一个直接作用于 值的闭包codec:


// first create a codec instance

c := codec {a, 0}


// now define the function as a closure with a reference to c

fns := template.FuncMap{

  "plus1": func() int {

      c.Count++

      return c.Count

   },

}


// now we don't need to pass anything to it in the template

t := template.Must(template.New("abc").Funcs(fns).Parse(`{{$l := len .Names}}{{range $k, $v := .Names}}{{if ne (plus1) $l}}{{$k}} {{$v}} {{end}}{{end}}.`))

输出是:


one 1 three 3

我猜这就是你的目标?并且该值在c执行结束时保留。


MM们
浏览 145回答 3
3回答

侃侃无极

他们的 API 已经更新,所以它是这样的:import k8sJson "k8s.io/apimachinery/pkg/runtime/serializer/json"...serializer := k8sJson.NewSerializerWithOptions(    k8sJson.DefaultMetaFactory, nil, nil,    k8sJson.SerializerOptions{        Yaml:   true,        Pretty: true,        Strict: true,    },)

慕斯709654

找到它,以供将来参考,以下是您可能想要执行的操作:package mainimport (    "os"    "k8s.io/kubernetes/pkg/api/unversioned"    "k8s.io/kubernetes/pkg/api/v1"    "k8s.io/kubernetes/pkg/runtime/serializer/json")func main() {    ns := &v1.Namespace{        TypeMeta: unversioned.TypeMeta{            Kind:       "Namespace",            APIVersion: "v1",        },        ObjectMeta: v1.ObjectMeta{            Name: "test",        },    }    e := json.NewYAMLSerializer(json.DefaultMetaFactory, nil, nil)    err := e.EncodeToStream(ns, os.Stdout)    if err != nil {        panic(err)    }}这可能不是最佳实践(欢迎提出更好的建议),但它确实可以。

拉莫斯之舞

package mainimport (    "os"    v1 "k8s.io/api/core/v1"    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"    "k8s.io/apimachinery/pkg/runtime/serializer/json")func main() {    ns := &v1.Namespace{        TypeMeta: metav1.TypeMeta{            Kind:       "Namespace",            APIVersion: "v1",        },        ObjectMeta: metav1.ObjectMeta{            Name: "test",        },    }    e := json.NewYAMLSerializer(json.DefaultMetaFactory, nil, nil)    //err := e.EncodeToStream(ns, os.Stdout)    err := e.Encode(ns, os.Stdout)    if err != nil {        panic(err)    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答