Golang模板:如何在变量中定义数组?

Nic*_*all 11 arrays variables templates go

在go模板中定义数组变量的正确语法是什么?(这里是一个HTML模板).这是我试过的:

{{define "template"}}
    {{ $x:=[]int{0,1,2} }}{{$x[0]}}
{{end}}
Run Code Online (Sandbox Code Playgroud)

错误日志说: unexpected "[" in command

谢谢.

seo*_*ong 11

没有内置的方法来做你想要达到的目标.见参数上,你可以用这些参数,并且管道做什么.

但您可以轻松定义自己的功能以实现目标:

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
}
Run Code Online (Sandbox Code Playgroud)

游乐场.


Rhu*_*arb 5

您可以在此处使用 sprig 库提供帮助(我将其用于 helm 模板 - 这是 go 模板,但 helm 内置了 sprig)

$myList := list  0 1 2
$new = append $myList 3
Run Code Online (Sandbox Code Playgroud)

来自小枝列表