Goテンプレートで非常に簡単なことを達成しようとして失敗しました!
range
アクションを使用すると、次のようにゼロベースのインデックスと共に配列を反復処理できます。
{{range $index, $element := .Pages}}
Number: {{$index}}, Text: {{element}}
{{end}}
ただし、1からカウントを開始するインデックスを出力しようとしています。最初の試行は失敗しました。
Number: {{$index + 1}}
これはillegal number syntax: "+"
エラーをスローします。
Go-langの公式ドキュメントを調べたところ、テンプレート内の算術演算に関して特に何も見つかりませんでした。
何が欠けていますか?
これを行うには、カスタム関数を作成する必要があります。
http://play.golang.org/p/WsSakENaC
package main
import (
"os"
"text/template"
)
func main() {
funcMap := template.FuncMap{
// The name "inc" is what the function will be called in the template text.
"inc": func(i int) int {
return i + 1
},
}
var strs []string
strs = append(strs, "test1")
strs = append(strs, "test2")
tmpl, err := template.New("test").Funcs(funcMap).Parse(`{{range $index, $element := .}}
Number: {{inc $index}}, Text:{{$element}}
{{end}}`)
if err != nil {
panic(err)
}
err = tmpl.Execute(os.Stdout, strs)
if err != nil {
panic(err)
}
}
たまたま consul-template
、それらの公開された 算術関数 が役立つかもしれません:
Number: {{add $index 1}}