鉴于此Go文本/模板代码:
Let's say:
{{ if eq .Foo "foo" }}
Hello, StackOverflow!
{{ else if eq .Foo "bar" }}
Hello, World!
{{ end }}
如果Foo
等于"foo"
,我们会得到以下输出:
Let's say:
Hello, StackOverflow!
(后跟换行符)
有没有办法摆脱额外的换行线?
我希望可以使用{{-
和-}}
语法来完成此操作:
Let's say:
{{- if eq .Foo "foo" }}
Hello, StackOverflow!
{{- else if eq .Foo "bar" }}
Hello, World!
{{- end }}
然而,这会产生illegal number syntax: "-"
错误。
答案 0 :(得分:4)
在第一个模板中,静态文本"Let's say:"
后面有换行符,第二行只包含{{if}}
操作,并且还包含换行符及其正文{{1} }从第3行开始。如果这是渲染,则2个静态文本之间将有2个换行符,因此您将看到一个空行(如您发布的那样)。
您可以使用"Hello, StackOverflow!"
删除第一个换行符,因此在渲染时,只有1个换行符到达输出,导致2个不同的行但它们之间没有换行符:
{{- if...
Let's say:
{{- if eq .Foo "foo" }}
Hello, StackOverflow!
{{- else if eq .Foo "bar" }}
Hello, World!
{{- end }}
为Foo
时的输出:
"foo"
Let's say:
Hello, StackOverflow!
为Foo
时的输出:
"bar"
在Go Playground上尝试。
请注意,这已添加到Go 1.6: Template中,并记录在text/template
: Text and Spaces。
如果您在操作Let's say:
Hello, World!
结束时使用-
符号,则甚至可以删除所有换行符:
-}}
Let's say:
{{- if eq .Foo "foo" -}}
Hello, StackOverflow!
{{- else if eq .Foo "bar" -}}
Hello, World!
{{- end -}}
为Foo
且"foo"
为Foo
时的输出:
"bar"
在Go Playground上试试这个。
答案 1 :(得分:0)
有一个新行,因为你在冒号(:)
之后添加了一个新行这有效https://play.golang.org/p/k4lazGhE-r 注意我只是在第一个冒号之后开始第一个 if