16

2 つの並列配列 (同じサイズ) を持つテンプレートを実行しており、両方の配列のアイテムを並列にリストしたいのですが、範囲内でインデックスを使用するにはどうすればよいですか?

これは明らかに機能しません:

{{range $i, $e := .First}}$e - {{index .Second $i}}{{end}}
4

1 に答える 1

19

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

于 2013-04-22T08:13:41.213 に答える