Как @mkopriva предложил в своем первом комментарии, вам просто нужно сослаться на все ваши функции в template.FuncMap
, где вы устанавливаете отображение имен в функции
Затем в шаблон нужно просто вызвать их, передав им mts
в качестве параметра.
package main
import (
"log"
"os"
"text/template"
)
type mts struct {
Type1 string
Type2 string
}
func main() {
funcMap := template.FuncMap{
"myFunc1": EchoType1,
"myFunc2": EchoType2,
}
const templateText = `
Input: {{printf "%q" .}}
Output1:{{myFunc1 .}}
Output2:{{myFunc2 .}}
`
tmpl, err := template.New("myFuncTest").Funcs(funcMap).Parse(templateText)
if err != nil {
log.Fatalf("parsing: %s", err)
}
myMts := mts{Type1: "myType1", Type2: "myType2"}
err = tmpl.Execute(os.Stdout, myMts)
if err != nil {
log.Fatalf("execution: %s", err)
}
}
func EchoType1(m mts) string {
return m.Type1
}
func EchoType2(m mts) string {
return m.Type2
}
Это даст следующий вывод:
Ввод: {"myType1" "myType2"}
Выход1: myType1
Выход2: myType2