访问嵌套模板中的外部作用域
在 Go 中使用嵌套模板时,从“with”或“访问外部作用域”由于点 (.) 变量的范围发生了变化,“range”范围可能会带来挑战。为了解决这个问题,可以使用特殊变量 $ 来访问调用范围。
考虑以下示例:
type MyData struct { OuterValue string InnerValue string } func main() { data := MyData{OuterValue: "Outer Value", InnerValue: "Inner Value"} template.Must(template.New("example").Parse("{{with .Inner}} Outer: {{$.OuterValue}}, Inner: {{.InnerValue}} {{end}}")).Execute(writer, data) }
在此示例中,“with”范围修改了点 (.) 变量引用 MyData 结构的“内部”值。但是,我们仍然需要从“with”范围内访问“OuterValue”。
为了实现这一点,我们使用 $ 变量。 $ 表示执行期间传递给模板的数据参数,与点 (.) 变量的起始值相同。通过使用 $,我们可以从嵌套的“with”或“range”范围内访问调用范围。
以下代码演示了 $:
$ is documented in the text/template docs: > When execution begins, $ is set to the data argument passed to Execute, that is, to the starting value of dot.
以上是如何在 Go 中访问嵌套模板内的外部作用域?的详细内容。更多信息请关注PHP中文网其他相关文章!