22925


タイトルのような事をしたいです。これをtemplateの計算でやるにはどのようにすればいいでしょうか。  
`=`演算子があればif節の中で変数に代入できますが`=`演算子がないのでどうすれば良いのかわかりません。

[code]

    {{ 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 }}
    
[/code]

各template functionの機能は下記のとおりです。

  * add 第1引数に第2引数を足す
  * sub 第1引数から第2引数を引く
  * mod 余りを計算する
  * div 割り算する
  * slice スライスを指定の数でスライスしたものを返す。

余り`$m`が0になるまで`$end~`に1足していけば良いのですが、if節中で変数を定義できない(ローカルスコープのため)のでできません。

dataとしてコードから渡す事はできますが、コードがややこしくなるので、できればtemplateで処理したいのですが、方法はありますでしょうか。


CC BY-SA 3.0
2016-03-06T06:59:47.083
22848
2016-03-08T08:56:37.267
7232
question
go templates
Golangのtemplateで配列を余りを均等にして3当分したい。


自己解決しました。

[code]

    func RetOneOrZero(n int)int{
        if n > 0{
            return 1
        }
        return 0
    }
    
    {{ define "tiledView" }}
    {{ $length := len . }}
    {{ $divide := div $length 3}}
    {{ $m := mod $length 3 }}
    <div class="row">
        <div class="col s12 m4">
            {{ $p := rioz $m }}
            {{ $m := sub $m 1 }}
            {{ $end1 := add $divide $p }}
            {{ range (slice . 0  $end1) }}
            {{ template "moviebox" . }}
            {{ end }}
        </div>
        <div class="col s12 m4">
            {{ $p := rioz $m }}
            {{ $m := sub $m 1 }}
            {{ $end2 := add (add $end1 $divide) $p }}
            {{ range (slice . $end1 $end2) }}
            {{ template "moviebox" . }}
            {{ end }}
        </div>
        <div class="col s12 m4">
            {{ $p := rioz $m }}
            {{ $m := sub $m 1 }}
            {{ $end3 := add (add $end2 $divide) $p }}
            {{ range (slice . $end2 $end3) }}
            {{ template "moviebox" . }}
            {{ end }}
        </div>
    </div>
    {{ end }}
    
[/code]


CC BY-SA 3.0
2016-03-08T08:56:37.267
22925
2016-03-08T08:56:37.267
7232
22848
answer