Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengekstrak Nama Medan Templat daripada Templat Go Parsed?

Bagaimana untuk Mengekstrak Nama Medan Templat daripada Templat Go Parsed?

Barbara Streisand
Lepaskan: 2024-12-18 21:43:18
asal
950 orang telah melayarinya

How to Extract Template Field Names from a Parsed Go Template?

Mendapatkan Senarai Tindakan Templat daripada Templat yang Dihuraikan

Bagaimanakah anda boleh mengekstrak templat yang ditakrifkan dalam templat sebagai kepingan rentetan? Pertimbangkan templat seperti:

<h1>{{ .name }} {{ .age }}</h1>
Salin selepas log masuk

Anda ingin mendapatkan []rentetan{"name", "age"}.

Memeriksa Pokok Templat yang Dihuraikan

Templat yang dihuraikan diwakili oleh templat.Pokok yang mengandungi butiran tentang struktur templat. Setiap nod pokok ini mempunyai kaedah Node.Type() yang memberikan maklumat tentang jenisnya. Jenis yang berkaitan termasuk:

  • NodeAction: Tindakan bukan kawalan seperti penilaian medan
  • NodeField: Nama medan atau kaedah

Lelaran Pokok

Untuk mengenal pasti tindakan dalam templat, anda boleh lelaran melalui pepohon dan menerokai nod. Fungsi sampel berikut menunjukkan proses ini:

import (
    "text/template/parse"
)

func ListTemplFields(t *template.Template) []string {
    return listNodeFields(t.Tree.Root, nil)
}

func listNodeFields(node parse.Node, res []string) []string {
    if node.Type() == parse.NodeAction {
        res = append(res, node.String())
    }

    if ln, ok := node.(*parse.ListNode); ok {
        for _, n := range ln.Nodes {
            res = listNodeFields(n, res)
        }
    }
    return res
}
Salin selepas log masuk

Contoh Penggunaan

Untuk menentukan medan yang diperlukan untuk templat:

t := template.Must(template.New("cooltemplate").
    Parse(`<h1>{{ .name }} {{ .age }}</h1>`))
fmt.Println(ListTemplFields(t))
Salin selepas log masuk

The output akan menjadi:

[{{.name}} {{.age}}]
Salin selepas log masuk

Nota: Demonstrasi ini ialah tidak menyeluruh dan mungkin tidak mengendalikan semua kes. Walau bagaimanapun, ia menggambarkan konsep mengekstrak tindakan templat dengan mengintrospeksi pepohon templat yang dihuraikan.

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Nama Medan Templat daripada Templat Go Parsed?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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