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

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

Linda Hamilton
Linda Hamiltonasal
2024-11-11 01:15:03470semak imbas

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

Ralat Templat Go: Mengakses Medan Bukan Struktur dalam Gelung Julat

Templat HTML Dalam Go, mengakses medan yang bukan sebahagian daripada struct berulang dalam gelung julat boleh menyebabkan ralat "tidak dapat menilai medan X dalam jenis Y".

Untuk menyelesaikan isu ini, mari kita periksa senario di mana struct Pengguna tidak mempunyai medan .lang tetapi templat perlu mengaksesnya.

Contoh Struktur Pengguna:

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

URL Struktur:

example.com/ms/users

Kod Templat:

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

Ralat:

"tidak boleh menilai medan dalam jenis Pengguna"

Penyelesaian:

Untuk mengakses .lang dari dalam gelung, anda boleh menggunakan pembolehubah $, yang diberikan nilai titik (.) selepas pelaksanaan daripada 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 }}

Ini kerana menurut dokumentasi templat Go, "$ ditetapkan kepada argumen data yang dihantar kepada Laksanakan, itu ialah, kepada nilai permulaan titik."

Oleh itu, pembolehubah $ boleh digunakan untuk mengakses medan yang bukan sebahagian daripada struktur yang diulang dalam gelung julat.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Medan Bukan Struktur dalam Gelung Julat 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