首頁  >  文章  >  後端開發  >  如何在 Go 模板範圍循環中存取非結構體欄位?

如何在 Go 模板範圍循環中存取非結構體欄位?

Linda Hamilton
Linda Hamilton原創
2024-11-11 01:15:03465瀏覽

How to Access Non-Struct Fields in Go Template Range Loops?

Go 範本錯誤:在範圍循環中存取非結構體欄位

在Go HTML 範本中,存取不屬於範圍循環中迭代結構的欄位可能會導致導致「無法評估類型Y 中的欄位X」錯誤。

為了解決此問題,讓我們檢查一個場景,其中 User 結構缺少 .lang 字段,但模板需要訪問它。

範例使用者結構:

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

URL 結構:

example.com/en/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,可以使用$ 變量,執行range 後為該變數分配點(.) 的值。

{{ range .users }}
  <form action="/{{ $.lang }}/users" method="POST">
    <input type="text" name="Username" value="{{ .Username }}">
    <input type="text" name="Email" value="{{ .Email }}">
  </form>
{{ end }}
這是因為根據Go 模板文檔,「$ 被設置為傳遞給Execute 的數據參數,即點的起始值。」

因此,可以使用$ 變量訪問不屬於範圍循環內迭代的結構一部分的字段。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn