Golangのtemplateで配列を余りを均等にして3当分したい。
タイトルのような事をしたいです。これをtemplateの計算でやるにはどのようにすればいいでしょうか。
=
演算子があればif節の中で変数に代入できますが=
演算子がないのでどうすれば良いのかわかりません。
{{ define "tiledView" }}
{{ $length := len . }}
/* 当分する単位を計算 */
{{ $divide := div $length 3}}
/* 余りを計算 */
{{ $m := mod $length 3 }}
{{ $end1 := add $divide 1 }}
{{ $m := sub $m 1 }}
{{ $end2 := add $end1 $divide }}
{{ $m := sub $m 1 }}
{{ $end3 := add $end2 $divide }}
<div class="row">
<div class="col s12 m4">
{{ range (slice . 0 $end1) }}
{{ template "moviebox" . }}
{{ end }}
</div>
<div class="col s12 m4">
{{ range (slice . $end1 $end2) }}
{{ template "moviebox" . }}
{{ end }}
</div>
<div class="col s12 m4">
{{ range (slice . $end2 $end3) }}
{{ template "moviebox" . }}
{{ end }}
</div>
</div>
{{ end }}
各template functionの機能は下記のとおりです。
- add 第1引数に第2引数を足す
- sub 第1引数から第2引数を引く
- mod 余りを計算する
- div 割り算する
- slice スライスを指定の数でスライスしたものを返す。
余り$m
が0になるまで$end~
に1足していけば良いのですが、if節中で変数を定義できない(ローカルスコープのため)のでできません。
dataとしてコードから渡す事はできますが、コードがややこしくなるので、できればtemplateで処理したいのですが、方法はありますでしょうか。