Bagaimana untuk Mengakses Medan Struktur dalam Templat HTML apabila Menggunakan Peta dalam Go?

Susan Sarandon
Lepaskan: 2024-10-24 07:43:29
asal
538 orang telah melayarinya

How to Access Struct Fields in HTML Templates when Using Maps in Go?

Mengakses Medan Struktur dalam Templat HTML dengan html/templat Go

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

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

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

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

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.

Penyelesaian:

Ubah suai struct Tugas untuk mengeksport medan Desc:

<code class="go">type Task struct {
   Cmd string
   Args []string
   Desc string
}</code>
Salin selepas log masuk
Salin selepas log masuk

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

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!