1

I am trying to simplify the template which I use to make it use a flatter data structure:

from

data := []App{App{"test data", []string{"app1", "app2", "app3"}}}

To:

data := App{App{"test data", []string{"app1", "app2", "app3"}}}

i.e. Remove the array of App, but when I try it I get an error.

Here is the working version: https://play.golang.org/p/2THGtDvlu01

I tried to change the template to

{{ range . -}}
{range $i,$a := .Command}{{if gt $i 0 }} && {{end}}{{.}}{{end}}
{{end}}

But I got an error of type mismatched, any idea how to fix it?

1 Answer 1

1
package main

import (
    "log"
    "os"
    "text/template"
)

func main() {
    // Define a template.
    const tmpl = `
echo &1

{{range $i,$a := .Command}}{{if gt $i 0 }} && {{end}}{{.}}{{end}}

echo 2
`

    // Prepare some data
    type App struct {
        Data    string
        Command []string
    }
    data := App{"test data", []string{"app1", "app2", "app3"}}

    // Create a new template and parse into it.
    t := template.Must(template.New("tmpl").Parse(tmpl))

    // Execute the template with data
    err := t.Execute(os.Stdout, data)
    if err != nil {
        log.Println("executing template:", err)
    }

}

Playground example

Gives the output

echo &1

app1 && app2 && app3

echo 2

Program exited.

If you remove the []App from your code, you also need to remove the range used in the template.

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

Comments

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.