首页 > 后端开发 > Golang > 正文

如何使用 Go 的 html/template 包访问 HTML 模板中地图元素的结构字段?

DDD
发布: 2024-10-24 07:34:30
原创
254 人浏览过

How to Access Struct Fields of Map Elements in HTML Templates Using Go's html/template Package?

检索 HTML/Template 的 Go 包中 Map 元素的 Struct 字段

情况:

您有一个结构体和一个使用该结构体作为值的映射。您希望访问使用 html/template 包呈现的 HTML 页面中的结构体字段。

解决方案:

要启用对模板中结构体字段的访问,它们必须被出口。导出字段需要以大写字母开头。

详细说明:

<code class="go">type Task struct {
   cmd string
   args []string
   Desc string // Exported field
}</code>
登录后复制

注意描述中的大写“D”

同样,更新地图和模板引用:

<code class="go">var taskMap = map[string]Task{
    "find": Task{
        cmd: "find",
        args: []string{"/tmp/"},
        Desc: "find files in /tmp dir",
    },
    "grep": Task{
        cmd: "grep",
        args:[]string{"foo","/tmp/*", "-R"},
        Desc: "grep files match having foo",
    },
}</code>
登录后复制
<code class="html">{{range $key, $value := .}}
   <li>Task Name:        {{$key}}</li>
   <li>Task Value:       {{$value}}</li>
   <li>Task description: {{$value.Desc}}</li>
{{end}}</code>
登录后复制

结果:

输出将包含每个任务的 Desc 字段:

<code class="html"><html>

<li>Task Name:        find</li>
<li>Task Value:       {find [/tmp/] find files in /tmp dir}</li>
<li>Task description: find files in /tmp dir</li>

<li>Task Name:        grep</li>
<li>Task Value:       {grep [foo /tmp/* -R] grep files match having foo}</li>
<li>Task description: grep files match having foo</li>

</html></code>
登录后复制

注意:此解决方案导出整个结构,因此如果您只需要特定字段,请考虑使用定义的模板函数。

以上是如何使用 Go 的 html/template 包访问 HTML 模板中地图元素的结构字段?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!