| // +build OMIT |
| |
| package main |
| |
| import ( |
| "html/template" |
| "log" |
| "os" |
| "strings" |
| ) |
| |
| const tmplText = ` |
| {{define "presentation"}} |
| Authors: |
| {{block "list" .Authors}} // HL |
| <ul> |
| {{- range .}} |
| <li>{{.}}</li> |
| {{- end}} |
| </ul> |
| {{end}} // HL |
| |
| Topics: |
| {{template "list" .Topics}} // HL |
| {{end}} |
| ` // OMIT |
| |
| type Presentation struct { |
| Authors []string |
| Topics []string |
| } |
| |
| func main() { |
| p := Presentation{ |
| Authors: []string{"one", "two", "three"}, |
| Topics: []string{"go", "templates"}, |
| } |
| |
| tmpl := template.Must(template.New("presentation").Parse(tmplText)) |
| |
| tmpl = tmpl.Funcs(template.FuncMap{"join": strings.Join}) // HL |
| tmpl = template.Must(tmpl.Parse(`{{define "list"}} {{join . " | "}} {{ end}}`)) // HL |
| |
| err := tmpl.Execute(os.Stdout, p) |
| if err != nil { |
| log.Fatal(err) |
| } |
| } |