Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengakses Talian Paip Induk/Global dalam Tindakan Julat Templat Go?

Bagaimana untuk Mengakses Talian Paip Induk/Global dalam Tindakan Julat Templat Go?

Barbara Streisand
Lepaskan: 2024-11-10 18:34:02
asal
274 orang telah melayarinya

How to Access the Parent/Global Pipeline in Go Templates' Range Action?

Mengakses Saluran Paip Ibu Bapa/Global dalam Tindakan Julat Templat Go

Dalam pakej teks/templat Go, keupayaan untuk mengakses saluran paip sebelum tindakan julat atau saluran paip induk/global adalah penting. Pertimbangkan contoh berikut:

const page = `{{range .Files}}<script src="{{html .Path}}/js/{{html .}}"></script>{{end}}`

type scriptFiles struct {
    Path string
    Files []string
}

func main() {
    t := template.New("page")
    t = template.Must(t.Parse(page))

    t.Execute(os.Stdout, &scriptFiles{"/var/www", []string{"go.js", "lang.js"}})
}
Salin selepas log masuk

Dalam contoh ini, mengakses .Path tidak akan dapat dilakukan dalam julat tindakan kerana .dot bertukar kepada elemen Fail semasa.

Disyorkan Penyelesaian - Menggunakan Pembolehubah $

Menurut dokumentasi pakej teks/templat, pembolehubah $ memegang argumen data yang diserahkan kepada Laksanakan, iaitu nilai awal .dot. Oleh itu, untuk mengakses Laluan skop luar menggunakan $.Path dalam tindakan julat, gunakan variasi berikut:

const page = `{{range .Files}}<script src="{{html $.Path}}/js/{{html .}}"></script>{{end}}`
Salin selepas log masuk

Penyelesaian Alternatif - Pembolehubah Tersuai

Sebelum tindakan julat, pembolehubah tersuai boleh ditakrifkan untuk menghantar nilai ke dalam skop julat. Contohnya:

const page = `{{$p := .Path}}{{range .Files}}<script src="{{html $p}}/js/{{html .}}"></script>{{end}}`
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Talian Paip Induk/Global dalam Tindakan Julat Templat Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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