我想創建一個如果不提供的參數使用默認值的golang模板,但如果我嘗試使用or
功能在我的模板,它給了我這個錯誤:如何將默認值添加到去文本/模板?
template: t2:2:20: executing "t2" at <index .table_name 0>: error calling index: index of untyped nil
這裏的代碼示例:https://play.golang.org/p/BwlpROrhm6
// text/template is a useful text generating tool.
// Related examples: http://golang.org/pkg/text/template/#pkg-examples
package main
import (
"fmt"
"os"
"text/template"
)
var fullParams = map[string][]string{
"table_name": []string{"TableNameFromParameters"},
"min": []string{"100"},
"max": []string{"500"},
}
var minimalParams = map[string][]string{
"min": []string{"100"},
"max": []string{"500"},
}
func check(err error) {
if err != nil {
fmt.Print(err)
}
}
func main() {
// Define Template
t := template.Must(template.New("t2").Parse(`
{{$table_name := (index .table_name 0) or "DefaultTableName"}}
Hello World!
The table name is {{$table_name}}
`))
check(t.Execute(os.Stdout, fullParams))
check(t.Execute(os.Stdout, minimalParams))
}
谷歌搜索指出我朝着isset
功能hugo's template engine,但我想不出他們是如何實現它,我不知道如果它甚至會解決我的問題。
這當然不是漂亮,但它的作品!我認爲你的預期目標是正確的 - 我應該在模板之外提交默認值。我會記住這個項目的未來版本。 – Noah