ZBLOG

golang {{}}和{{- -}}区别

在 Go 的 text/templatehtml/template 中,{{}}{{- -}} 的主要区别在于对空白字符(空格、换行等)的处理方式:

1. 标准语法 {{ }}

  • 保留所有空白字符:模板中的换行符、缩进等会原样输出
  • 示例
{{ if .Condition }}
    Hello
{{ end }}

输出结果会保留所有换行和缩进

2. 去除空白语法 {{- -}}

  • 去除相邻的空白字符:减号 - 表示去除该侧的空白字符
  • 三种形式
    • {{- ... }}:去除左侧空白
    • {{ ... -}}:去除右侧空白
    • {{- ... -}}:去除两侧空白

a) 去除左侧空白 ({{-)

Hello {{- .Name}}

输入:”Hello John” → “HelloJohn”

b) 去除右侧空白 (-}})

Hello {{.Name -}}
, welcome!

输入:”John “ → “HelloJohn, welcome!”

c) 去除两侧空白 ({{- -}})

Hello {{- .Name -}}, 
welcome!

输入:” John “ → “HelloJohn,welcome!”

3. HTML模板中的特殊注意事项

html/template 中,空白处理更严格:

<ul>
    {{- range .Items }}
    <li>{{ . }}</li>
    {{ end -}}
</ul>

这可以避免生成多余的换行符

⚠️重要区别总结表

{{ }} {{- -}}
作用 保留所有空白 按需去除指定侧空白
场景 需要格式化的输出 紧凑的输出或HTML优化
安全 html/template自动转义 html/template同样自动转义

实际开发中,通常会在控制结构(if/range/with等)使用带减号的语法来获得更干净的输出。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23765

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?