Golang模板忽略/跳过/离开动作

时间:2018-11-12 23:07:38

标签: go-templates

是否可以仅执行模板的一部分而丢弃其他部分?

我从另一个工具生成了一个很大的文件,其中包含{{}}中的一些值 像这样

{{.Value}}
{{.Nono}}

或者这个:

Hello {{ .Value }} With name {{ if .Value}}{{ .Value }}{{ else }}(whoops, no name!){{ end }}{{.metadata.name}}


type SwapVariable struct {
    Value string
}

func sw(fileName string, tmp string) {
b, err := ioutil.ReadFile(fileName) // just pass the file name
if err != nil {
    fmt.Print(err)
}

str := string(b)
var kubeDistribution = []SwapVariable{
    {Value: tmp},
}

t := template.Must(template.New("letter").Parse(str))

buf := bytes.NewBufferString("")

for _, r := range kubeDistribution {
    errTemplate := t.Execute(buf, r)
    if errTemplate != nil {
        log.Println("executing template:", errTemplate)
    }
}

errWrite := ioutil.WriteFile(fileName, buf.Bytes(), 0644)
if errWrite != nil {
    log.Fatalf("Error in: %s\n", errWrite)
}
}


executing template: template: letter:1:20: executing "letter" at <.Value>: can't evaluate field Value in type string

0 个答案:

没有答案