Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prevent "<no value>" being inserted by golang text/template library

Go places <no value> as the result of a the template expansion when no value is present for a particular template parameter.

Is there any way to prevent this? All I can think of right now is to insert an empty version of "AppVersion" into the data map

e.g.

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

like image 395
hookenz Avatar asked Apr 20 '18 03:04

hookenz


1 Answers

Ooops, found the answer if anyone interested I'll leave the question & answer up.

tmpl, err := template.New("").Option("missingkey=zero").Parse(text)
like image 96
hookenz Avatar answered Sep 21 '22 19:09

hookenz