Go template
Go template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package main
import (
"os"
// "io"
"fmt"
"log"
// "strings"
"text/template"
)
var tpl *template.Template
func init() {
fmt.Println("Initializing ...")
tpl = template.Must(template.ParseGlob("*.gohtmlx"))
}
func main() {
// strongly typed channel
// err := tpl.Execute(os.Stdout, nil)
// if err != nil {
// log.Fatalln(err)
// }
err := tpl.ExecuteTemplate(os.Stdout, "3.gohtml", nil)
if err != nil {
log.Fatalln(err)
}
}
**More advanced examples’’
```go package main
import ( “os” // “io” “fmt” “log” // “strings” “text/template” )
var tpl *template.Template
func init() { fmt.Println(“Initializing …”) tpl = template.Must(template.ParseGlob(“*.gohtml”)) }
type kernelMember struct { Name string Position int }
type car struct { Manufacturer string Model string Doors int }
// I am gonna define a “struct” consuming the previous two
type item struct { People []kernelMember Transport []car }
func main() {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
j := kernelMember{
Name: "Jan Toth",
Position: 1,
}
v := kernelMember{
Name: "Vilko",
Position: 7,
}
ja := kernelMember{
Name: "Jaroslav",
Position: 3,
}
p := kernelMember{
Name: "Peto",
Position: 1,
}
k := kernelMember{
Name: "Krissko",
Position: 1,
}
m := car{
Manufacturer: "Mercedes",
Model: "Class E",
Doors: 4,
}
f := car{
Manufacturer: "Ferrari",
Model: "Lancer",
Doors: 3,
}
// I am going to put this struct "jano" into slice of list
sliceOfKernelMembers := []kernelMember{j, v, ja, p, k}
sliceOfCars := []car{m, f}
data := item{
People: sliceOfKernelMembers,
Transport: sliceOfCars,
}
err := tpl.ExecuteTemplate(os.Stdout, "tpl.gohtml", sliceOfKernelMembers)
if err != nil {
log.Fatalln(err)
}
// tpl-neasted.gohtml
err = tpl.ExecuteTemplate(os.Stdout, "tpl-neasted.gohtml", data)
if err != nil {
log.Fatalln(err)
}
sliceVariable := []string{"Gandhi", "Buddha", "Jesus"}
err = tpl.ExecuteTemplate(os.Stdout, "slice.gohtml", sliceVariable)
if err != nil {
log.Fatalln(err)
}
err = tpl.ExecuteTemplate(os.Stdout, "slice-with-index.gohtml", sliceVariable)
if err != nil {
log.Fatalln(err)
}
// maps
mapVariable := map[string]string{
"India": "Ghandi",
"America": "MArtin L. King",
"Love": "Jesus",
}
err = tpl.ExecuteTemplate(os.Stdout, "map.gohtml", mapVariable)
if err != nil {
log.Fatalln(err)
}
}
```’
This post is licensed under CC BY 4.0 by the author.
