私はgolangテンプレートでループを1回だけ繰り返す必要があります。現在、すべてのキーをループしていますが、範囲を使用してマップ上をループする、一度だけ反復する
どうすればいいですか?代わりに、範囲の
{{range .Users}}
<div>
{{.Name}}
</div>
{{end}}
私はgolangテンプレートでループを1回だけ繰り返す必要があります。現在、すべてのキーをループしていますが、範囲を使用してマップ上をループする、一度だけ反復する
どうすればいいですか?代わりに、範囲の
{{range .Users}}
<div>
{{.Name}}
</div>
{{end}}
、引数
{{index .Users 0}}
<div>
{{.Name}}
</div>
{{end}}
2つの溶液とindex
を与えます。ループ時に、あなたのインデックスが0であることを確認し、次のいずれか
{{range $index, $element := . }}{{if eq $index 0 -}}
Item: {{$element}}
{{end}}{{end -}}
それとも、ここでは両方を示している完全なコードがあります。1.
{{range first .}}
Item: {{.}}
{{end}}
をスライスを取り、長さに切り捨て「最初」の機能を定義することができますあなたも可能ですtry on the playground.
package main
import (
"fmt"
"os"
"text/template"
)
var t = template.Must(template.New("x").Parse(
"[{{range $index, $element := . }}{{if eq $index 0 -}}{{$element}}{{end}}{{end -}}]"))
var funcs = map[string]interface{}{
"first": func(arg []string) []string {
if len(arg) > 0 {
return arg[:1]
}
return nil
},
}
var t2 = template.Must(template.New("x").Funcs(funcs).Parse(
"[{{range first . }}{{.}}{{end -}}]"))
func main() {
tmpls := []*template.Template{t, t2}
for i, t := range tmpls {
fmt.Println("TEMPLATE", i)
a := []string{"one", "two", "three"}
for j := 0; j < len(a); j++ {
fmt.Println("with input slice of length", j)
t.Execute(os.Stdout, a[:j])
fmt.Println()
}
fmt.Println()
}
}
これはコレクションが空でも安全ですか?その構文は私にとって奇妙に見えます! – Blankman