Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengekstrak Tindakan Medan Secara Pemrograman daripada Templat Parsed Go?
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!