Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengakses Medan Bukan Struktur dalam Templat Go Dalam Gelung Julat?

Bagaimana untuk Mengakses Medan Bukan Struktur dalam Templat Go Dalam Gelung Julat?

DDD
DDDasal
2024-11-09 01:00:02831semak imbas

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

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!

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