Artikel ini menangani isu mendapatkan semula medan struct daripada elemen peta dalam templat HTML menggunakan html/ pakej templat dalam Go.
Pertimbangkan struct Tugas berikut:
<code class="go">type Task struct { Cmd string Args []string Desc string }</code>
Selain itu, peta dimulakan dengan struct Tugas sebagai nilai dan rentetan sebagai kunci:
<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, mari kita periksa isu yang dihadapi. Templat sedang digunakan untuk menghuraikan halaman HTML:
<code class="go">func listHandle(w http.ResponseWriter, r *http.Request){ t, _ := template.ParseFiles("index.tmpl") t.Execute(w, taskMap) }</code>
Coretan kod berikut mewakili templat index.tmpl:
<code class="html"><html> {{range $key, $value := .}} <li>Task Name: {{$key}}</li> <li>Task Value: {{$value}}</li> <li>Task description: {{$value.Desc}}</li> {{end}} </html></code>
Pendekatan ini berjaya mengeluarkan kunci dan nilai peta, tetapi percubaan untuk mengakses medan Tugas dalam templat, contohnya menggunakan {{$value.Desc}}, mengakibatkan ralat.
Penyelesaian terletak pada mengeksport medan yang ingin anda akses dalam templat. Ini boleh dicapai dengan menggunakan huruf besar pada huruf pertama nama medan:
<code class="go">type Task struct { Cmd string Args []string Desc string }</code>
Oleh itu, rujukan kepada nama medan dalam templat juga mesti menggunakan huruf besar:
<code class="html"><html> {{range $key, $value := .}} <li>Task Name: {{$key}}</li> <li>Task Value: {{$value}}</li> <li>Task description: {{$value.Desc}}</li> {{end}} </html></code>
Dengan mengikuti langkah ini , anda boleh berjaya mendapatkan dan memaparkan medan Desc setiap Tugasan dalam templat.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Medan Struktur Bersarang dalam Templat HTML dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!