首页 > 后端开发 > Golang > 如何在Go模板的Range Action中访问父/全局管道?

如何在Go模板的Range Action中访问父/全局管道?

Barbara Streisand
发布: 2024-11-10 18:34:02
原创
214 人浏览过

How to Access the Parent/Global Pipeline in Go Templates' Range Action?

在 Go 模板的范围操作中访问父/全局管道

在 Go 的文本/模板包中,能够在范围行动或父/全局管道至关重要。请考虑以下示例:

const page = `{{range .Files}}<script src="{{html .Path}}/js/{{html .}}"></script>{{end}}`

type scriptFiles struct {
    Path string
    Files []string
}

func main() {
    t := template.New("page")
    t = template.Must(t.Parse(page))

    t.Execute(os.Stdout, &scriptFiles{"/var/www", []string{"go.js", "lang.js"}})
}
登录后复制

在此示例中,在范围操作内无法访问 .Path,因为 .dot 会转换为当前的 Files 元素。

推荐解决方案 - 使用 $ 变量

根据 text/template 包文档,$ 变量保存传递给 Execute 的数据参数,这是 .dot 的初始值。因此,要在范围操作中使用 $.Path 访问外部作用域的路径,请使用以下变体:

const page = `{{range .Files}}<script src="{{html $.Path}}/js/{{html .}}"></script>{{end}}`
登录后复制

替代解决方案 - 自定义变量

之前范围操作,可以定义自定义变量以将值传递到范围范围。例如:

const page = `{{$p := .Path}}{{range .Files}}<script src="{{html $p}}/js/{{html .}}"></script>{{end}}`
登录后复制

以上是如何在Go模板的Range Action中访问父/全局管道?的详细内容。更多信息请关注PHP中文网其他相关文章!

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