变量与赋值

最后更新时间:2026-05-07 10:00:00

1. 点号与上下文

模板中的 . 叫做当前上下文。最常见的场景是直接读取字段:

{{ .Title }}
{{ .Description }}
{{ .CreatedAt }}

如果当前数据是一个对象,点号后面就像访问属性一样去取值。

2. 定义变量

Go template 可以用 $ 定义变量。变量一般用于保存中间结果,避免重复取值,也方便在嵌套结构里保留外层上下文。

{{ $title := .Title }}
<h1>{{ $title }}</h1>

3. 重新赋值

变量定义之后可以再次赋值:

{{ $count := 1 }}
{{ $count = 2 }}

实际开发里更常见的是在循环中保存索引、临时文案、外层对象引用。

4. 保存外层上下文

当你进入 range 之后,点号会变成当前循环项。此时如果还要访问外层对象,通常先保存一个变量:

{{ $root := . }}
{{ range .List }}
  <a href="{{ $root.URL }}">{{ .Title }}</a>
{{ end }}

5. 几个关键约定

  • $ 是变量前缀,点号 . 是当前对象。
  • 变量作用域跟随模板语句块变化,离开块后就不能再直接使用。
  • 如果你发现“字段突然取不到了”,先检查是不是进入了 rangewith 后上下文变了。