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