如何避免由条件引起的换行?
How to avoid newlines caused by conditionals?
鉴于此 Go text/template 代码:
Let's say:
{{ if eq .Foo "foo" }}
Hello, Whosebug!
{{ else if eq .Foo "bar" }}
Hello, World!
{{ end }}
如果 Foo
等于 "foo"
:
,我们将得到以下输出
Let's say:
Hello, Whosebug!
(后跟一个换行符)
有没有办法去掉多余的换行符?
我希望这可以使用 {{-
和 -}}
语法来完成:
Let's say:
{{- if eq .Foo "foo" }}
Hello, Whosebug!
{{- else if eq .Foo "bar" }}
Hello, World!
{{- end }}
但是,这会产生 illegal number syntax: "-"
错误。
有一个新行,因为您要在冒号 (:) 后添加一个新行
这个有效https://play.golang.org/p/k4lazGhE-r
请注意,我只是在第一个冒号
之后开始第一个 if
在你的第一个模板中,在静态文本 "Let's say:"
之后有一个换行符,第二行只包含 {{if}}
动作,它还包含一个换行符,它的正文 "Hello, Whosebug!"
从第 3 行开始。如果呈现此内容,则 2 个静态文本之间将有 2 个换行符,因此您会看到一个空行(如您发布的那样)。
您可以使用 {{- if...
去掉第一个换行符,因此在渲染时,只有一个换行符到达输出,导致 2 个不同的行,但它们之间没有换行符:
Let's say:
{{- if eq .Foo "foo" }}
Hello, Whosebug!
{{- else if eq .Foo "bar" }}
Hello, World!
{{- end }}
当Foo
为"foo"
时的输出:
Let's say:
Hello, Whosebug!
当Foo
为"bar"
时的输出:
Let's say:
Hello, World!
在 Go Playground 上试用。
请注意,这是在 Go 1.6: Template, and is documented at text/template
: Text and Spaces 中添加的。
如果你在动作结束时使用-
符号-}}
,你甚至可以删除所有的换行符:
Let's say:
{{- if eq .Foo "foo" -}}
Hello, Whosebug!
{{- else if eq .Foo "bar" -}}
Hello, World!
{{- end -}}
当Foo
为"foo"
且Foo
为"bar"
时的输出:
Let's say:Hello, Whosebug!
Let's say:Hello, World!
在 Go Playground 上试试这个。
鉴于此 Go text/template 代码:
Let's say:
{{ if eq .Foo "foo" }}
Hello, Whosebug!
{{ else if eq .Foo "bar" }}
Hello, World!
{{ end }}
如果 Foo
等于 "foo"
:
Let's say:
Hello, Whosebug!
(后跟一个换行符)
有没有办法去掉多余的换行符?
我希望这可以使用 {{-
和 -}}
语法来完成:
Let's say:
{{- if eq .Foo "foo" }}
Hello, Whosebug!
{{- else if eq .Foo "bar" }}
Hello, World!
{{- end }}
但是,这会产生 illegal number syntax: "-"
错误。
有一个新行,因为您要在冒号 (:) 后添加一个新行
这个有效https://play.golang.org/p/k4lazGhE-r 请注意,我只是在第一个冒号
之后开始第一个 if在你的第一个模板中,在静态文本 "Let's say:"
之后有一个换行符,第二行只包含 {{if}}
动作,它还包含一个换行符,它的正文 "Hello, Whosebug!"
从第 3 行开始。如果呈现此内容,则 2 个静态文本之间将有 2 个换行符,因此您会看到一个空行(如您发布的那样)。
您可以使用 {{- if...
去掉第一个换行符,因此在渲染时,只有一个换行符到达输出,导致 2 个不同的行,但它们之间没有换行符:
Let's say:
{{- if eq .Foo "foo" }}
Hello, Whosebug!
{{- else if eq .Foo "bar" }}
Hello, World!
{{- end }}
当Foo
为"foo"
时的输出:
Let's say:
Hello, Whosebug!
当Foo
为"bar"
时的输出:
Let's say:
Hello, World!
在 Go Playground 上试用。
请注意,这是在 Go 1.6: Template, and is documented at text/template
: Text and Spaces 中添加的。
如果你在动作结束时使用-
符号-}}
,你甚至可以删除所有的换行符:
Let's say:
{{- if eq .Foo "foo" -}}
Hello, Whosebug!
{{- else if eq .Foo "bar" -}}
Hello, World!
{{- end -}}
当Foo
为"foo"
且Foo
为"bar"
时的输出:
Let's say:Hello, Whosebug!
Let's say:Hello, World!
在 Go Playground 上试试这个。