首頁 > 後端開發 > Golang > 主體

如何在 Go 中存取 HTML 模板中的嵌套結構欄位?

Linda Hamilton
發布: 2024-10-24 07:46:30
原創
143 人瀏覽過

How to Access Nested Struct Fields in HTML Templates in Go?

如何在Go 中存取HTML 模板中地圖元素的結構字段

本文解決了使用html/ 從HTML 模板中的地圖元素檢索結構字段的問題Go中的模板包。

考慮以下Task 結構:

<code class="go">type Task struct {
   Cmd string
   Args []string
   Desc string
}</code>
登入後複製
登入後複製

此外,使用Task 結構作為值和字串作為鍵來初始化映射:

<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="go">func listHandle(w http.ResponseWriter, r *http.Request){
    t, _ := template.ParseFiles("index.tmpl")
    t.Execute(w, taskMap)
}</code>
登入後複製

現在,讓我們來研究一下當前的問題。範本用於解析HTML 頁面:

<code class="html"><html>
{{range $key, $value := .}}
   <li>Task Name:        {{$key}}</li>
   <li>Task Value:       {{$value}}</li>
   <li>Task description: {{$value.Desc}}</li>
{{end}}
</html></code>
登入後複製
登入後複製

以下程式碼片段表示index.tmpl 範本:

此方法成功輸出地圖的鍵和值,但嘗試存取範本中的任務欄位(例如使用{{$value.Desc}})會導致錯誤。
<code class="go">type Task struct {
   Cmd string
   Args []string
   Desc string
}</code>
登入後複製
登入後複製

解決方案在於匯出您希望在範本中存取的欄位。這可以透過將欄位名稱的首字母大寫來實現:

<code class="html"><html>
{{range $key, $value := .}}
   <li>Task Name:        {{$key}}</li>
   <li>Task Value:       {{$value}}</li>
   <li>Task description: {{$value.Desc}}</li>
{{end}}
</html></code>
登入後複製
登入後複製

因此,範本中對欄位名稱的引用也必須大寫:

按照以下步驟操作,您可以成功檢索並顯示範本中每個任務的Desc 欄位。

以上是如何在 Go 中存取 HTML 模板中的嵌套結構欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!