60 lines
1.1 KiB
Go
60 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
"text/template"
|
|
)
|
|
|
|
type Person struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
func main() {
|
|
var err error
|
|
funcMap := template.FuncMap{
|
|
"title": strings.Title,
|
|
}
|
|
base, err := Asset("templates/base.txt")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
tmpl, err := template.New("base").Funcs(funcMap).Parse(string(base))
|
|
|
|
templates := make(map[string]*template.Template)
|
|
|
|
templateFiles := []struct {
|
|
name string
|
|
path string
|
|
}{
|
|
{"body", "templates/body.txt"},
|
|
{"detail", "templates/detail.txt"},
|
|
{"pic", "templates/pic.txt"},
|
|
}
|
|
for _, tf := range templateFiles {
|
|
a, err := Asset(tf.path)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
t, err := tmpl.Clone()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
t, err = t.Parse(string(a))
|
|
templates[tf.name] = t
|
|
}
|
|
|
|
person := Person{"bilbo", 111}
|
|
for _, name := range []string{"body", "detail", "pic"} {
|
|
fmt.Println("--------------------------------------")
|
|
err = templates[name].Execute(os.Stdout, person)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
fmt.Println("--------------------------------------")
|
|
}
|