Golang templates: как определить массив в переменной?

каким будет правильный синтаксис для определения переменной массива внутри шаблона go ? (здесь шаблон HTML). Вот что я попробовал:

{{define "template"}}
    {{ $x:=[]int{0,1,2} }}{{$x[0]}}
{{end}}

журнал ошибок говорит:unexpected "[" in command

спасибо.

2 ответов


нет встроенный способ сделать то, что вы хотите достичь. Вижу аргументы о том, что вы можете делать с аргументами и трубопровода.

но вы можете легко определить свою собственную функцию для достижения своей цели:

package main

import (
    "html/template"
    "os"
)

func main() {
tmpl := `
{{ $slice := mkSlice "a" 5 "b" }}
{{ range $slice }}
     {{ . }}
{{ end }}
`
    funcMap := map[string]interface{}{"mkSlice": mkSlice}
    t := template.New("demo").Funcs(template.FuncMap(funcMap))
    template.Must(t.Parse(tmpl))
    t.ExecuteTemplate(os.Stdout, "demo", nil)
}

func mkSlice(args ...interface{}) []interface{} {
    return args
}

площадка.


map или array тип не поддерживается, но я передаю map или array переменная от контроллера к шаблону, затем используйте {{index .Varible KEY}} для получения map или array значение для операций пересылки. это могло помочь вам.