19

What would be the correct syntax to define an array variable inside a go template ? (here a HTML template). Here's what I tried :

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

The error log says : unexpected "[" in command

Thanks.

2 Answers 2

20

there is no built-in way to do what you want to achieve. See the arguments on what you can do with the arguments and the pipeline.

But you could easily define your own function to achieve your goal:

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
}

Playground.

Sign up to request clarification or add additional context in comments.

Comments

9

You can use the sprig library to help here (I'm using this for helm templates - which are go templates, but helm has sprig builtin)

$myList := list  0 1 2
$new = append $myList 3

From Sprig Lists

2 Comments

any way to create a map in helm/go template ?
What can we do if we have strings and not integers?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.