2 つの並列配列 (同じサイズ) を持つテンプレートを実行しており、両方の配列のアイテムを並列にリストしたいのですが、範囲内でインデックスを使用するにはどうすればよいですか?
これは明らかに機能しません:
{{range $i, $e := .First}}$e - {{index .Second $i}}{{end}}
2 つの並列配列 (同じサイズ) を持つテンプレートを実行しており、両方の配列のアイテムを並列にリストしたいのですが、範囲内でインデックスを使用するにはどうすればよいですか?
これは明らかに機能しません:
{{range $i, $e := .First}}$e - {{index .Second $i}}{{end}}
定義済みのグローバル テンプレート関数の 1 つに がありindexます。
index次の引数で最初の引数にインデックスを付けた結果を返します。したがってindex x 1 2 3、Go 構文では、x[1][2][3]. 索引付けされた各アイテムは、、、または である必要がmapありsliceますarray。
だからあなたは正しい軌道に乗っています。唯一の問題は、ブロックdot内で が再割り当てされたという事実を考慮していないことです。range
したがって、元のドットに戻る必要があります。そのためには、次のようになります。
実行が開始
$されると、Execute に渡されたデータ引数、つまり dot の開始値に設定されます。
したがって(テンプレートで他に何も行われていないと仮定して)、次のことができるはずです。
{{range $i, $e := .First}}$e - {{index $.Second $i}}{{end}}
個人的には、zip複数のスライスを受け入れ、値の各ペアのスライスを返すというテンプレート関数を作成します。テンプレートでよりきれいに見え、おそらくどこかで再利用されるでしょう.