Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengekstrak Nama Medan Templat daripada Templat Go Parsed?
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>
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:
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 }
Contoh Penggunaan
Untuk menentukan medan yang diperlukan untuk templat:
t := template.Must(template.New("cooltemplate"). Parse(`<h1>{{ .name }} {{ .age }}</h1>`)) fmt.Println(ListTemplFields(t))
The output akan menjadi:
[{{.name}} {{.age}}]
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!