Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengakses Pembolehubah dari Julat Luar dalam Templat Go?

Bagaimana untuk Mengakses Pembolehubah dari Julat Luar dalam Templat Go?

Barbara Streisand
Barbara Streisandasal
2024-11-09 03:36:02873semak imbas

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,
    })
}

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 }}

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 }}

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!

Kenyataan:
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