防止“<无值>”被 golang 文本/模板库插入

Mat*_*att 5 go go-templates

<no value>当特定模板参数不存在任何值时,Go作为模板扩展的结果放置。

有什么办法可以防止这种情况吗?我现在能想到的就是在数据映射中插入一个空版本的“AppVersion”

例如

package main

import (
    "text/template"
    "log"
    "bytes"
    "fmt"
)

func main() {
    data := make(map[string]string)
    //data["AppVersion"] = "Octane_3.0"

    text := "APP_VERSION={{.AppVersion}}"
    tmpl, err := template.New("").Parse(text)
    if err != nil {
        log.Fatal(err)
    }

    var b bytes.Buffer
    err = tmpl.Execute(&b, data)
    if err != nil {
        fmt.Println("template.Execute failed", err)
    }

    fmt.Println("Template text:", text)
    fmt.Println("Expanded:", b.String())
}
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/OuLhcHOCsWJ

Mat*_*att 8

哎呀,如果有人感兴趣,我会找到答案,我会留下问题并回答。

tmpl, err := template.New("").Option("missingkey=zero").Parse(text)
Run Code Online (Sandbox Code Playgroud)