在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中文網其他相關文章!