首页 > 后端开发 > Golang > 如何在 Go 中访问嵌套模板内的外部作用域?

如何在 Go 中访问嵌套模板内的外部作用域?

Mary-Kate Olsen
发布: 2024-11-15 11:38:02
原创
740 人浏览过

How can I Access the Outer Scope within Nested Templates in Go?

访问嵌套模板中的外部作用域

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板