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
複数のスライスを受け入れ、値の各ペアのスライスを返すというテンプレート関数を作成します。テンプレートでよりきれいに見え、おそらくどこかで再利用されるでしょう.