with语句
Syntax
with 表达式
在 Go 模板中,Falsy 值包括 false
,0
,任何 nil 指针或接口值,以及任何长度为零的数组、切片、映射或字符串。其余所有值都为 Truhty 值。
{{ $var := "foo" }}
{{ with $var }}
{{ . }} → foo
{{ end }}
与 else
语句一起使用:
{{ $var := "foo" }}
{{ with $var }}
{{ . }} → foo
{{ else }}
{{ print "var 为假值" }}
{{ end }}
理解上下文
在页面模板的顶部,上下文(即点号)是一个 Page
对象。在 with
块内,上下文与传递给 with
语句的值绑定。
以此虚构的示例为例:
{{ with 42 }}
{{ .Title }}
{{ end }}
Hugo 将抛出错误:
无法在 int 类型中评估字段 Title
这个错误发生是因为我们在整数上尝试使用 .Title
方法,而不是 Page
对象。在 with
块内,如果我们想要渲染页面标题,我们需要获取传递给模板的上下文。
以下模板将按预期渲染页面标题:
{{ with 42 }}
{{ $.Title }}
{{ end }}
详见 Go 的 text/template 文档获取更多信息。