Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengakses Medan Struktur Bersarang dalam Templat HTML dalam Go?

Bagaimana untuk Mengakses Medan Struktur Bersarang dalam Templat HTML dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 07:46:30230semak imbas

How to Access Nested Struct Fields in HTML Templates in Go?

Cara Mengakses Medan Struktur Elemen Peta dalam Templat HTML dalam Go

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!

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