1 回答

TA貢獻1936條經驗 獲得超7個贊
函數的字符串參數可以用雙引號"
或反引號括起來。
在模板中用反引號包裹的字符串文字稱為原始字符串常量,它們的工作方式類似于Go 源代碼中的原始字符串文字:可能包括換行符(并且不能包含轉義序列)。
因此,如果您對參數使用反引號,則可能會得到您想要的結果。
例如a.tmpl
:
START
{{ note `a
b\t
c
d`}}
END
加載并執行模板的應用程序:
t := template.Must(template.New("").Funcs(template.FuncMap{
"note": func(s string) string { return "<note>\n" + s + "\n</note>" },
}).ParseFiles("a.tmpl"))
if err := t.ExecuteTemplate(os.Stdout, "a.tmpl", nil); err != nil {
panic(err)
}
這將輸出:
START
<note>
a
b\t
c
d
</note>
END
如果您在 Go 源代碼中定義模板,則有點棘手,就像您對模板文本使用反引號一樣(因為您想編寫多行),您不能將反引號嵌入原始字符串文字中。你必須打破文字,并連接反引號。
在 Go 源文件中執行此操作的示例:
func main() {
t := template.Must(template.New("").Funcs(template.FuncMap{
"note": func(s string) string { return "<note>\n" + s + "\n</note>" },
}).Parse(src))
if err := t.Execute(os.Stdout, nil); err != nil {
panic(err)
}
}
const src = `START
{{ note ` + "`" + `a
b\t
c
d` + "`" + `}}
END
`
- 1 回答
- 0 關注
- 123 瀏覽
添加回答
舉報