テンプレート範囲内の最後の項目を識別する
Go テンプレートでは、範囲内の最後の項目を識別するのが難しい場合があります。組み込みの $i 変数は現在のインデックスのみを表すため、反復がいつ終了するかを判断することが困難になります。
この障害を克服するための回避策は、$i 変数とリフレクションを組み合わせるカスタム関数を使用することです。反復されるデータ構造の長さを確認するためのベースのアプローチ。現在のインデックスを長さから 1 を引いたものと比較することで、最終的な反復を正確に検出できます。
このカスタム関数の実装方法の例を次に示します。
func last(i int, a interface{}) bool { return i == reflect.ValueOf(a).Len() - 1 }
この関数を登録することにより、 FuncMap の一部としてテンプレート内で使用すると、最後の項目に「and」を追加した目的のカンマ区切りリストを簡単に出力できます。
template.Must(template.New("abc").Funcs(fns).Parse(`{{range $i, $e := .}}{{if $i}}, {{end}}{{if last $i $}}and {{end}}{{$e}}{{end}}.`))
このソリューションは、再利用可能で効果的な方法を提供します。テンプレート範囲内の最後の項目を識別し、データ表示のための Go テンプレートの柔軟性を強化します。
以上がGo テンプレート範囲内の最後の項目を特定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。