Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengekstrak Senarai Tindakan daripada Templat Parsed Go?
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 }
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))
Output:
Output untuk yang disediakan templat ialah:
[{{.name}} {{.age}}]
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!