...
Run Format

Source file src/text/template/example_test.go

Documentation: text/template

  // Copyright 2011 The Go Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style
  // license that can be found in the LICENSE file.
  
  package template_test
  
  import (
  	"log"
  	"os"
  	"strings"
  	"text/template"
  )
  
  func ExampleTemplate() {
  	// Define a template.
  	const letter = `
  Dear {{.Name}},
  {{if .Attended}}
  It was a pleasure to see you at the wedding.
  {{- else}}
  It is a shame you couldn't make it to the wedding.
  {{- end}}
  {{with .Gift -}}
  Thank you for the lovely {{.}}.
  {{end}}
  Best wishes,
  Josie
  `
  
  	// Prepare some data to insert into the template.
  	type Recipient struct {
  		Name, Gift string
  		Attended   bool
  	}
  	var recipients = []Recipient{
  		{"Aunt Mildred", "bone china tea set", true},
  		{"Uncle John", "moleskin pants", false},
  		{"Cousin Rodney", "", false},
  	}
  
  	// Create a new template and parse the letter into it.
  	t := template.Must(template.New("letter").Parse(letter))
  
  	// Execute the template for each recipient.
  	for _, r := range recipients {
  		err := t.Execute(os.Stdout, r)
  		if err != nil {
  			log.Println("executing template:", err)
  		}
  	}
  
  	// Output:
  	// Dear Aunt Mildred,
  	//
  	// It was a pleasure to see you at the wedding.
  	// Thank you for the lovely bone china tea set.
  	//
  	// Best wishes,
  	// Josie
  	//
  	// Dear Uncle John,
  	//
  	// It is a shame you couldn't make it to the wedding.
  	// Thank you for the lovely moleskin pants.
  	//
  	// Best wishes,
  	// Josie
  	//
  	// Dear Cousin Rodney,
  	//
  	// It is a shame you couldn't make it to the wedding.
  	//
  	// Best wishes,
  	// Josie
  }
  
  // The following example is duplicated in html/template; keep them in sync.
  
  func ExampleTemplate_block() {
  	const (
  		master  = `Names:{{block "list" .}}{{"\n"}}{{range .}}{{println "-" .}}{{end}}{{end}}`
  		overlay = `{{define "list"}} {{join . ", "}}{{end}} `
  	)
  	var (
  		funcs     = template.FuncMap{"join": strings.Join}
  		guardians = []string{"Gamora", "Groot", "Nebula", "Rocket", "Star-Lord"}
  	)
  	masterTmpl, err := template.New("master").Funcs(funcs).Parse(master)
  	if err != nil {
  		log.Fatal(err)
  	}
  	overlayTmpl, err := template.Must(masterTmpl.Clone()).Parse(overlay)
  	if err != nil {
  		log.Fatal(err)
  	}
  	if err := masterTmpl.Execute(os.Stdout, guardians); err != nil {
  		log.Fatal(err)
  	}
  	if err := overlayTmpl.Execute(os.Stdout, guardians); err != nil {
  		log.Fatal(err)
  	}
  	// Output:
  	// Names:
  	// - Gamora
  	// - Groot
  	// - Nebula
  	// - Rocket
  	// - Star-Lord
  	// Names: Gamora, Groot, Nebula, Rocket, Star-Lord
  }
  

View as plain text