Go text/template可选行渲染异常:前缀与换行处理问题
解决Go text/template可选前缀的换行问题
直接上正确的模板写法:
{{- with $.Prefix -}}{{ . }}{{ "\n" }}{{- end -}}Contents
如果追求可读性,也可以拆成多行:
{{- with $.Prefix -}} {{ . }} {{- "\n" -}} {{- end -}} Contents
为什么之前的写法出问题?
- 用
{{ end -}}时,-会吃掉end后面的所有空白(包括模板里的换行),导致Prefix输出后直接和Contents拼接,没有预期的换行。 - 改成
{{- end }}时,当Prefix为空,with块不执行,但模板里{{- end }}和Contents之间的换行没被处理,就会多出来一个空行。
验证三种场景
- Prefix="Hello World":输出
Hello World Contents - Prefix="Hello\nWorld":输出
Hello World Contents - Prefix="":输出
Contents
内容的提问来源于stack exchange,提问作者Emptyless
相关产品推荐
相关产品推荐

