【问题标题】:Prevent "<no value>" being inserted by golang text/template library防止 golang 文本/模板库插入“<no value>”
【发布时间】:2018-04-20 03:49:45
【问题描述】:

作为模板扩展的结果转到&lt;no value&gt; 当特定模板参数没有值时。

有什么办法可以防止这种情况发生吗? 我现在能想到的就是插入一个空版本的“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())
}

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

【问题讨论】:

    标签: go go-templates


    【解决方案1】:

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

    tmpl, err := template.New("").Option("missingkey=zero").Parse(text)
    

    【讨论】:

      【解决方案2】:

      另一种选择是首先使用模板原生的ne 函数进行测试。检查值与零。因此,将您的模板更改为这样的东西应该可以工作..

      text := `{{ if ne .AppVersion nil }}APP_VERSION={{.AppVersion}}{{ end }}`
      

      【讨论】:

        【解决方案3】:

        您可以使用html/template 代替text/template 来解决您的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-11
          • 1970-01-01
          • 2018-08-31
          • 1970-01-01
          相关资源
          最近更新 更多