Menggunakan Templat Go: Mencipta dan Mengubah Suai Pembolehubah Global
Templat Go menawarkan fungsi yang mudah untuk mencipta serpihan kod boleh guna semula untuk menjana HTML dinamik. Satu cabaran biasa yang dihadapi semasa bekerja dengan templat ialah ketidakupayaan untuk menentukan dan mengubah suai pembolehubah global merentas bahagian berlainan templat.
Masalah: Pembolehubah Global dengan Skop Terhad
Pertimbangkan templat HTML berikut:
{{if .UserData}} {{$currentUserId := .UserData.UserId}} [<a href="#ask_question">Inside {{$currentUserId}}</a>] {{else}} {{$currentUserId := 0}} {{end}} [<a href="#ask_question">outside {{$currentUserId}}</a>]
Dalam syarat if, templat mentakrifkan pembolehubah setempat $currentUserId dengan nilai yang ditetapkan berdasarkan atribut UserData. Walau bagaimanapun, skop pembolehubah ini dihadkan kepada blok if, sementara kami mahukan akses kepadanya di luar juga.
Penyelesaian: Menentukan dan Mengubah Suai Pembolehubah
Untuk menentukan pembolehubah global dalam templat Go, gunakan operator tugasan :=.
{{$currentUserId := 0}}
Untuk menukar nilai pembolehubah, gunakan operator tugasan =.
{{$currentUserId = .UserData.UserId}}
Dengan mentakrifkan pembolehubah di luar blok if tetapi mengubah suainya dalam blok, perubahan kepada $currentUserId berterusan selepas blok if.
Sebagai contoh, kod berikut menambah beberapa logik tambahan sebelum dan selepas blok if:
{{$currentUserId := 0}} Before: {{$currentUserId}} {{if .UserData}} {{$currentUserId = .UserData.UserId}} [<a href="#ask_question">Inside {{$currentUserId}}</a>] {{else}} {{$currentUserId = 0}} {{end}} After: {{$currentUserId}}
Kini, untuk kedua-dua kes UserData hadir dan tidak hadir, pembolehubah $currentUserId dikemas kini dengan betul dan boleh diakses di luar blok if.
Pendekatan Lain
Dalam selain menggunakan pembolehubah global, anda juga boleh mempertimbangkan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mentakrifkan dan Mengubah Suai Pembolehubah Global dalam Templat Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!