首页 > 后端开发 > Golang > 如何在 Go 中访问模板范围循环内的 URL 参数?

如何在 Go 中访问模板范围循环内的 URL 参数?

Patricia Arquette
发布: 2024-11-09 12:59:02
原创
923 人浏览过

How to Access URL Parameters Within a Template Range Loop in Go?

在模板范围循环内访问 URL 参数

使用 Go 模板时,了解如何在循环内访问数据至关重要。考虑以下代码和模板:

type User struct {
    Username string
    Password []byte
    Email string
}

func main() {
    users := []User{
        {Username: "Alice", Email: "alice@example.com"},
        {Username: "Bob", Email: "bob@example.com"},
    }

    renderer.HTML(w, http.StatusOK, "users/index", map[string]interface{}{
        "lang":  chi.URLParam(r, "lang"),
        "users": users,
    })
}
登录后复制
{{ range .users }}
  <form action="/{{ .lang }}/users" method="POST">
    <input type="text" name="Username" value="{{ .Username }}">
    <input type="text" name="Email" value="{{ .Email }}">
  </form>
{{ end }}
登录后复制

在这种情况下,您可能会遇到错误,指示“lang”字段不是“User”结构的一部分。为了解决这个问题,我们可以利用“点”的概念和特殊变量“$”。

理解 Dot 和 $

当调用循环时, “点”(.) 的内容被分配给特殊变量“$”。这允许我们从范围块内的循环外部访问数据。例如,要访问“lang”参数,我们可以使用“$”,如下所示:

{{ range .users }}
  <form action="/{{ $.lang }}/users" method="POST">
    <input type="text" name="Username" value="{{ .Username }}">
    <input type="text" name="Email" value="{{ .Email }}">
  </form>
{{ end }}
登录后复制

此方法成功解决了该问题,使您能够在范围循环内访问“lang”参数。 “dot”和“$”的行为记录在 Go 模板指南中。

替代方法

如果遇到使用“$”访问数据的场景由于嵌套循环而具有挑战性,请考虑替代选项,例如将“点”分配给临时变量或使用“with”语句创建用于分配数据的专用范围。

以上是如何在 Go 中访问模板范围循环内的 URL 参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

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