Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk mengekstrak Senarai Tindakan daripada Templat Parsed Go?

Bagaimana untuk mengekstrak Senarai Tindakan daripada Templat Parsed Go?

Linda Hamilton
Lepaskan: 2024-12-16 12:12:11
asal
582 orang telah melayarinya

How to Extract Action Lists from a Parsed Go Template?

Mendapatkan Senarai Tindakan daripada Templat yang Dihuraikan

Soalan:

Bagaimana saya boleh mendapatkan semula senarai tindakan templat (seperti yang ditakrifkan oleh {{ .blahblah }}) daripada yang dihuraikan templat?

Kata Pengantar:

Medan Templat.Pokok, seperti yang dinyatakan, tidak boleh dipercayai untuk peruntukan input dalam pelaksanaan templat. Adalah penting untuk menentukan templat dan data yang dijangkakan terlebih dahulu.

Penyelesaian:

Untuk memeriksa templat yang dihuraikan, navigasi pepohon hurainya (template.Template.Tree) . Nod dalam pepohon ini mewakili pelbagai elemen, termasuk tindakan templat. Di sini, kami menumpukan pada nod jenis parse.NodeAction (Tindakan Dinilai sebagai Medan).

Contoh Kod:

Kod berikut merentasi pepohon parse secara rekursif untuk mengenal pasti nod dengan NodeAction taip:

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

Penggunaan:

Gunakan fungsi ListTemplFields pada templat yang dihuraikan untuk mendapatkan semula senarai token tindakan:

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

Output:

Output untuk yang disediakan templat ialah:

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

Atas ialah kandungan terperinci Bagaimana untuk mengekstrak Senarai Tindakan daripada Templat Parsed Go?. 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