gpt4 book ai didi

go - 如何避免由条件引起的换行?

转载 作者:IT王子 更新时间:2023-10-29 01:27:07 25 4
gpt4 key购买 nike

鉴于此 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: "-" 错误。

最佳答案

在您的第一个模板中,您在静态文本 "Let's say:" 之后有一个换行符,第二行仅包含 {{if}} 操作,它还包含一个换行符,其正文 "Hello, StackOverflow!" 从第 3 行开始。如果呈现此内容,则 2 个静态文本之间将有 2 个换行符,因此您将看到一个空行(如您发布的那样)。

您可以使用 {{- if... 去除第一个换行符,因此在渲染时,只有一个换行符到达输出,导致 2 个不同的行但它们之间没有换行符:

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" 时的输出:

Let's say:
Hello, World!

Go Playground 上试试.

请注意,这是在 Go 1.6: Template 中添加的, 并记录在 text/template: Text and Spaces .

如果您在操作-}} 结束时使用- 符号,您甚至可以删除所有换行符:

Let's say:
{{- if eq .Foo "foo" -}}
Hello, StackOverflow!
{{- else if eq .Foo "bar" -}}
Hello, World!
{{- end -}}

Foo"foo"Foo"bar" 时的输出:

Let's say:Hello, StackOverflow!
Let's say:Hello, World!

Go Playground 上试试这个.

关于go - 如何避免由条件引起的换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39948383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com