Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengakses Medan Struktur dalam Templat HTML dalam Go Apabila Medan Tidak Dieksport?

Bagaimana untuk Mengakses Medan Struktur dalam Templat HTML dalam Go Apabila Medan Tidak Dieksport?

Susan Sarandon
Susan Sarandonasal
2024-10-24 07:55:30546semak imbas

How to Access Struct Fields in HTML Templates in Go When Fields Are Unexported?

Cara Mengakses Medan Struktur dalam Templat HTML dalam Go

Masalah

Anda mahu mengakses medan struktur yang disimpan dalam peta menggunakan pakej html/template dalam Go.

Penyelesaian

Templat Go lalai tidak membenarkan akses kepada medan struct yang tidak dieksport. Untuk mendayakan ini, anda perlu mengeksport medan dengan menggunakan huruf besar pertama namanya.

Contoh Kod

Tentukan Struktur dengan Medan yang Dieksport:

<code class="go">type Task struct {
   cmd string
   args []string
   Desc string // Note the capital "D"
}</code>

Mulakan Peta dengan Struktur 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>

Uraikan dan Laksanakan Templat:

<code class="go">func listHandle(w http.ResponseWriter, r *http.Request) {
    t, _ := template.ParseFiles("index.tmpl")
    t.Execute(w, taskMap)
}</code>

Fail Templat:

<code class="go"><html>
{{range $key, $value := .}}
   <li>Task Name:        {{$key}}</li>
   <li>Task Value:       {{$value}}</li>
   <li>Task description: {{$value.Desc}}</li>
{{end}}
</html></code>

Output

Templat kini akan dapat mengakses medan yang dieksport bagi struct Tugas dalam peta:

<code class="html"><html>

<li>Task Name:        find</li>
<li>Task Value:       {find [/tmp/] find files in /tmp dir}</li>
<li>Task description: find files in /tmp dir</li>

<li>Task Name:        grep</li>
<li>Task Value:       {grep [foo /tmp/* -R] grep files match having foo}</li>
<li>Task description: grep files match having foo</li>

</html></code>

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Medan Struktur dalam Templat HTML dalam Go Apabila Medan Tidak Dieksport?. 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