Skip to content

默认值函数 ​

Sprig 提供了为模板设置默认值的工具。

default ​

要设置简单的默认值,请使用 default:

default "foo" .Bar

在上述示例中,如果 .Bar 的计算结果为非空值,则使用该值。但如果为空,则返回 foo。

"空" 的定义取决于类型:

  • 数字:0
  • 字符串:""
  • 列表:[]
  • 字典:{}
  • 布尔值:false
  • 同时也包括 nil(即 null)

对于结构体,没有空的定义,因此结构体永远不会返回默认值。

empty ​

empty 函数会根据给定值是否为空返回 true 或 false。

空的值在 default 部分中列出。

empty .Foo

请注意,在 Go 模板的条件中,会为您计算是否为空。因此,您很少需要使用 if empty .Foo。而是直接使用 if .Foo。

coalesce ​

coalesce 函数接受一列值,并返回第一个非空值。

coalesce 0 1 2

上述示例返回 1。

此函数适用于扫描多个变量或值的情况:

coalesce .name .parent.name "Matt"

上述示例首先检查 .name 是否为空。

如果不为空,则返回该值。

如果为空,coalesce 将评估 .parent.name 是否为空。

最后,如果 .name 和 .parent.name 都为空,则返回 Matt。

all ​

all 函数接受一列值,并在所有值均非空时返回 true。

all 0 1 2

上述示例返回 false。

此函数适用于评估多个变量或值的条件的情况:

all (eq .Request.TLS.Version 0x0304) (.Request.ProtoAtLeast 2 0) (eq .Request.Method "POST")

上述示例将检查 http.Request 是否为 "POST" 方法,并具有 tls 1.3 和 http/2 版本。

any ​

any 函数接受一列值,并在任何一个值非空时返回 true。

any 0 1 2

上述示例返回 true。

此函数适用于评估多个变量或值的条件的情况:

any (eq .Request.Method "GET") (eq .Request.Method "POST") (eq .Request.Method "OPTIONS")

上述示例将检查 http.Request 的方法是否为 GET/POST/OPTIONS 之一。

fromJson, mustFromJson ​

fromJson 函数将 JSON 文档解码为结构体。

如果输入无法解码为 JSON,则该函数将返回空字符串。

mustFromJson 会在 JSON 无效时返回错误。

fromJson "{\"foo\": 55}"

toJson, mustToJson ​

toJson 函数将项目编码为 JSON 字符串。

如果项目无法转换为 JSON,则该函数将返回空字符串。

mustToJson 会在项目无法以 JSON 编码时返回错误。

toJson .Item

上述示例返回 .Item 的 JSON 字符串表示形式。

toPrettyJson, mustToPrettyJson ​

toPrettyJson 函数将项目编码为漂亮(缩进)的 JSON 字符串。

toPrettyJson .Item

上述示例返回 .Item 的缩进的 JSON 字符串表示形式。

toRawJson, mustToRawJson ​

toRawJson 函数将项目编码为带有未转义 HTML 字符的 JSON 字符串。

toRawJson .Item

上述示例返回 .Item 的未转义的 JSON 字符串表示形式。

ternary ​

ternary 函数接受两个值和一个测试值。

如果测试值为真,则返回第一个值。

如果测试值为空,则返回第二个值。

这类似于 C 三元运算符。

测试值为真 ​

ternary "foo" "bar" true

或

true | ternary "foo" "bar"

上述示例返回 "foo"。

测试值为假 ​

ternary "foo" "bar" false

或

false | ternary "foo" "bar"

上述示例返回 "bar"。