在 Go 語言內通常都將 Html Temaple 寫入到 io.Writer interface
像是 *http.ResponseWriter
,但是有些情境需要將 Template 寫入到 String 變數內,例如實作簡訊 Template,這時候需要將 Html Temaple 轉成 String。該如何實作,非常簡單,只需要在任意變數內實作 io.Writer interface
即可,而 String 該如何轉換呢?可以使用 buffer’s pointer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| func GetString(filename string, data interface{}) (string, error) {
t := template.New(filename).Funcs(NewFuncMap())
content, err := ReadFile(filename)
if err != nil {
logrus.Warnf("Failed to read builtin %s template. %s", filename, err)
return "", err
}
t.Parse(
string(content),
)
var tpl bytes.Buffer
if err := t.Execute(&tpl, data); err != nil {
return "", err
}
return tpl.String(), nil
}
|
其中 ReadFile
是讀取檔案函式,NewFuncMap
則是 Function Map。
See also