Dalam pakej html/template Go, anda boleh menghadapi cabaran apabila mengakses medan struct yang disimpan sebagai nilai dalam peta. Artikel ini menyediakan penyelesaian kepada masalah ini, membolehkan anda mendapatkan semula dan memaparkan medan individu struct dalam templat anda.
Pertimbangkan contoh berikut, di mana kami mentakrifkan struct Tugas:
<code class="go">type Task struct { Cmd string Args []string Desc string }</code>
Kami memulakan peta dengan struct Tugas sebagai nilai dan rentetan sebagai kekunci:
<code class="go">var taskMap = map[string]Task{ "find": Task{ Cmd: "find", Args: []string{"/tmp/"}, Desc: "find files in /tmp dir", }, "grep": Task{ Cmd: "grep", Args: []string{"foo", "/tmp/*", "-R"}, Desc: "grep files match having foo", }, }</code>
Sekarang, kami ingin menghuraikan halaman HTML menggunakan data Peta tugas menggunakan html/template:
<code class="go">func listHandle(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("index.tmpl") t.Execute(w, taskMap) }</code>
Berikut ialah templat yang sepadan, index.tmpl:
<code class="html"><html> {{range $k, $v := .}} <li>Task Name: {{$k}}</li> <li>Task Value: {{$v}}</li> <li>Task Description: {{$v.Desc}}</li> {{end}} </html></code>
Semasa mengakses pembolehubah $k dan $v daripada peta berfungsi seperti yang diharapkan, mengakses medan Desc menggunakan {{$v.Desc}} gagal . Untuk menyelesaikan masalah ini, kami perlu memastikan bahawa medan yang ingin kami akses dalam templat dieksport. Dalam Go, medan dieksport apabila ia bermula dengan huruf besar.
Ubah suai struct Tugas untuk mengeksport medan Desc:
<code class="go">type Task struct { Cmd string Args []string Desc string }</code>
Kemas kini peta dengan medan Desc yang dieksport:
<code class="go">var taskMap = map[string]Task{ "find": Task{ Cmd: "find", Args: []string{"/tmp/"}, Desc: "find files in /tmp dir", }, "grep": Task{ Cmd: "grep", Args: []string{"foo", "/tmp/*", "-R"}, Desc: "grep files match having foo", }, }</code>
Dalam templat, kemas kini sintaks untuk merujuk medan Desc yang dieksport:
<code class="html">{{range $k, $v := .}} <li>Task Name: {{$k}}</li> <li>Task Value: {{$v}}</li> <li>Task Description: {{$v.Desc}}</li> {{end}}</code>
Dengan mengikuti langkah ini, anda akan dapat mengakses medan struct dalam templat HTML anda, membolehkan anda memaparkan dan menggunakan data yang disimpan dalam peta Go anda dengan mudah.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Medan Struktur dalam Templat HTML apabila Menggunakan Peta dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!