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
Lepaskan: 2024-10-24 07:46:30
asal
227 orang telah melayarinya

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>
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan