Go templates pipelines
Using Go template pipelines and custom FuncMap functions for date formatting, math operations, and chaining function calls in templates.
This example demonstrates Go template pipelines with custom functions registered via template.FuncMap. It defines helper functions for date formatting, doubling a number, computing square roots, and squaring values. These functions are registered on the template engine so they can be called directly within .gohtml template files using the pipeline syntax.
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
package main
import (
"os"
"time"
"fmt"
"log"
"math"
"text/template"
)
var tpl *template.Template
func init() {
fmt.Println("Initializing ...")
// tpl = template.Must(template.ParseGlob("*.gohtml"))
// to incorporate some extra function into template object
tpl = template.Must(template.New("").Funcs(fm).ParseGlob("pipelines.gohtml"))
}
// define several functions to be used in templating
func monthDayYear(t time.Time) string{
return t.Format("01-02-2006")
}
func double(x int) int {
return x + x
}
func sqRoot(x float64) float64 {
return math.Sqrt(x)
}
func square(x int) float64 {
return math.Pow(float64(x), 2)
}
var fm = template.FuncMap{
"fdateMDY": monthDayYear,
"fdbl": double,
"fsqrt": sqRoot,
"fsq": square,
}
func main() {
// err := tpl.ExecuteTemplate(os.Stdout, "dateformatting.gohtml", time.Now())
err := tpl.ExecuteTemplate(os.Stdout, "pipelines.gohtml", 3)
if err != nil {
log.Fatalln(err)
}
}
This post is licensed under CC BY 4.0 by the author.