在 Go 語言內通常都將 Html Temaple 寫入到
io.Writer interface
像是 *http.ResponseWriter
,但是有些情境需要將 Template 寫入到 String 變數內,例如實作簡訊 Template,這時候需要將 Html Temaple 轉成 String。該如何實作,非常簡單,只需要在任意變數內實作 io.Writer interface
即可,而 String 該如何轉換呢?可以使用 buffer’s pointer
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。