2013-04-22 6 views
8

2つの並列配列(同じサイズ)を持つテンプレートを実行していて、両方の配列の項目を並行してリストしたいのですが、どのように範囲内のインデックスを使用しますか?html/templateで範囲内のインデックスを使用して並列配列を反復処理する方法は?

これは明らかに動作しません:

事前に定義された global template functions
{{range $i, $e := .First}}$e - {{index .Second $i}}{{end}} 

答えて

10

一つはindexです。

index引数の後に最初の引数のインデックス付け結果を で返します。したがって、index x 1 2 3は、Go構文では、 x[1][2][3]です。各インデックス項目は、map,slice、またはarrayである必要があります。

あなたは正しい方向にあります。唯一の問題は、rangeブロック内でdotが再割り当てされたという事実を考慮していないことです。

実行が開始されると、$を実行するために渡されたデータを引数に設定され、そのために私たちは

以下、それはの開始値に、である必要がありますので、あなたは、元のドットに取得する必要がありますドット。だから、

あなたが行うことができるはず(テンプレートで起こっている他には何もないと仮定した場合):個人的に

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

しかし、私は複数のスライスを受け入れzipと呼ばれるテンプレート関数を作成しますと、各値のペアのスライスを返します。それはあなたのテンプレートでもっときれいに見え、たぶんどこかで再利用されるでしょう。