Mengakses Medan Bukan Struktur dalam Templat Go Dalam Gelung Julat
Apabila mengulangi sepotong struct dalam templat Go menggunakan {{ julat}} gelung, anda mungkin menghadapi ralat jika anda cuba mengakses medan yang bukan sebahagian langsung daripada struct. Sebagai contoh, pertimbangkan contoh berikut:
type User struct { Username string Password []byte Email string ... } renderer.HTML(w, http.StatusOK, "users/index", map[string]interface{}{ "lang": chi.URLParam(r, "lang"), "users": users})
Dalam templat HTML, anda mungkin menghadapi ralat berikut semasa cuba mengakses medan {{ .lang }}:
`got template: can't evaluate field X in type Y (X not part of Y but stuck in a {{range}} loop)`
Ralat ini berlaku kerana medan {{ .lang }} bukan sebahagian daripada struct Pengguna. Untuk menyelesaikan isu ini, anda boleh menggunakan pembolehubah $, yang merujuk data yang diberikan kepada {{ . }} berikutan pemanggilan gelung {{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 }}
Mengikut dokumentasi templat Go, apabila gelung {{range}} memulakan pelaksanaan, pembolehubah $ ditetapkan secara automatik kepada data hujah diserahkan kepada templat. Dalam kes ini, hujah data ialah peta yang mengandungi kunci lang. Oleh itu, anda boleh menggunakan $ untuk mengakses nilai lang dalam gelung.
Jika anda memerlukan akses kepada berbilang medan bukan struct dalam gelung bersarang, anda juga boleh menggunakan pernyataan dengan atau penyataan tugasan pembolehubah untuk menetapkan {{ . }} kepada pembolehubah yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Medan Bukan Struktur dalam Templat Go Dalam Gelung Julat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!