Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengekstrak Tindakan Medan Secara Pemrograman daripada Templat Parsed Go?

Bagaimana untuk Mengekstrak Tindakan Medan Secara Pemrograman daripada Templat Parsed Go?

Barbara Streisand
Barbara Streisandasal
2024-12-18 11:46:10819semak imbas

How to Programmatically Extract Field Actions from Parsed Go Templates?

Memahami Pengekstrakan Medan Templat daripada Templat Parsed

Pengenalan:

Mengambil semula senarai secara berprogram tindakan templat yang ditakrifkan dalam templat Go yang dihuraikan ialah tugas biasa dalam senario tertentu. Artikel ini meneroka teknik untuk mencapai ini menggunakan medan Template.Tree.

Pemeriksaan Templat yang Dihuraikan

Perwakilan yang dihuraikan bagi templat disimpan dalam Template.Tree medan, boleh diakses sebagai parse. Contoh pokok. Pokok ini menyimpan semua komponen templat, termasuk tindakan, teks dan struktur kawalan.

Mengenal pasti Tindakan Templat

Tindakan templat, seperti penilaian medan dan panggilan fungsi , diwakili oleh nod dengan jenis parse.NodeAction. Untuk mengekstrak senarai tindakan ini daripada pepohon, kita boleh menjalankan strukturnya secara rekursif dan menyemak jenis setiap nod.

Sampel Pelaksanaan

Kod berikut menunjukkan contoh pelaksanaan yang mendapatkan semula senarai tindakan templat:

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
}

Contoh Penggunaan

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

Output

[{{.name}} {{.age}}]

Kaveat:

Walaupun teknik ini secara amnya membenarkan pengekstrakan tindakan lapangan daripada templat, ia mempunyai had. Sebagai contoh, ia tidak mengendalikan semua struktur kawalan dan sintaks templat yang kompleks. Ia bertujuan sebagai demonstrasi konsep asas dan harus disesuaikan dengan sewajarnya.

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Tindakan Medan Secara Pemrograman daripada Templat Parsed Go?. 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