1

Revel で html/template パッケージを使用して反復するときに、スライスの現在のインデックスを出力しようとしましたが、期待した結果が得られません。

私の行動:

func (c App) Index() revel.Result {
    test_slice := []string{"t", "e", "s", "t"}

    return c.Render(test_slice)
}

私のテンプレート:

{{range $i, $test_slice := .}}
    {{$i}}
{{end}}

を得る代わりに0 1 2 3

私は得るDevMode RunMode currentLocale errors flash test_slice session title

私は何を間違えましたか?

4

1 に答える 1

2

残念ながら、test_slice配列を反復処理していません。その場合、コードは次のようになります。

package main

import (
    "os"
    "html/template"
)

const templateString = `{{range $i, $test_slice := .}}
    {{$i}}
{{end}}`

func main() {
    t, err := template.New("foo").Parse(templateString)
    if err != nil {
        panic(err)
    }

    test_slice := []string{"t", "e", "s", "t"}

    err = t.Execute(os.Stdout, test_slice)
    if err != nil {
        panic(err)
    }
}

出力:

    0

    1

    2

    3

test_sliceあなたのコードは、 が値の 1 つにすぎないマップを反復処理しています。表示されているのは、このマップのキー名ですtest_slice。そのうちの 1 つはどこにありますか。機能させるには、テンプレートを次のように変更する必要があります。

{{range $i, $test_slice := .test_slice}}
    {{$i}}
{{end}}

次のPlayground の例を検討してください: http://play.golang.org/p/are5JNPXt1

于 2013-12-18T07:34:49.773 に答える