Bagaimana untuk Mengakses Pembolehubah dari Julat Luar dalam Templat Go?

Barbara Streisand
Lepaskan: 2024-11-09 03:36:02
asal
882 orang telah melayarinya

How to Access Variables from Outer Ranges in Go Templates?

Ralat: "Tidak Dapat Menilai Medan X dalam Jenis Y" dalam Templat Go dengan Julat Bersarang

Ralat "tidak dapat menilai medan X dalam jenis Y (X bukan sebahagian daripada Y tetapi tersekat dalam gelung {{julat}})" berlaku apabila anda cuba mengakses medan yang bukan sebahagian daripada struktur yang diulang dalam templat Go. Ini boleh berlaku apabila anda mempunyai julat bersarang dan cuba mengakses pembolehubah yang ditakrifkan dalam julat luar.

Sebagai contoh, pertimbangkan contoh berikut:

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

func main() {
    users := []User{{"user1", []byte("password"), "user1@example.com"}, {"user2", []byte("password"), "user2@example.com"}}
    renderer.HTML(w, http.StatusOK, "users/index", map[string]interface{}{
        "lang":  "en",
        "users": users,
    })
}
Salin selepas log masuk

Dalam fail templat yang sepadan , kod berikut cuba mengakses pembolehubah lang dalam gelung julat:

{{ range .users }}
  <form action="/{{ .lang }}/users" method="POST">
    <input type="text" name="Username" value="{{ .Username }}">
    <input type="text" name="Email" value="{{ .Email }}">
  </form>
{{ end }}
Salin selepas log masuk

Walau bagaimanapun, memandangkan lang bukan medan struct Pengguna, enjin templat akan menimbulkan ralat yang dinyatakan di atas. Untuk menyelesaikan isu ini, anda boleh menggunakan pembolehubah $ untuk mengakses konteks semasa, yang mengandungi semua pembolehubah yang ditakrifkan dalam julat luar. Kod templat yang dikemas kini akan kelihatan seperti ini:

{{ range .users }}
  <form action="/{{ $.lang }}/users" method="POST">
    <input type="text" name="Username" value="{{ .Username }}">
    <input type="text" name="Email" value="{{ .Email }}">
  </form>
{{ end }}
Salin selepas log masuk

Ini akan mengakses pembolehubah lang dengan betul dan menjana output yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pembolehubah dari Julat Luar dalam Templat Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan