Bagaimana untuk Menguji Medan Sah dalam Templat Golang Tanpa Litar pintas?

DDD
Lepaskan: 2024-10-26 05:34:31
asal
491 orang telah melayarinya

How to Test for Valid Fields in Golang Templates Without Short-Circuiting?

Ujian Templat Golang untuk Medan Sah

Masalah:

Apabila cuba menguji untuk kewujudan medan yang sah dalam templat Golang menggunakan fungsi dan templat, beberapa kaedah biasa telah gagal. Tingkah laku ini berpunca daripada fakta bahawa dan bukan litar pintas dinilai, tidak seperti operator &&, menyebabkan ralat seperti "jenis tidak sah untuk perbandingan" apabila cuba membandingkan medan nol dengan nilai.

Penyelesaian :

Disebabkan penilaian bukan litar pintas dan dalam templat, pendekatan alternatif mesti diambil. Berikut adalah dua kaedah yang boleh digunakan untuk senario ini:

1. Penyata if Bersarang:

{{if $.MyStruct.MyField}}
    {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}}
{{end}}
Salin selepas log masuk

Dalam pendekatan ini, penyataan if luar menyemak sama ada $.MyStruct.MyField wujud, dan penyataan if dalam menyemak sama ada Nilainya sama dengan nilai yang diingini. Ini memastikan perbandingan hanya dilakukan jika medan tidak kosong.

2. dengan Tindakan:

<select name="y">
   {{range $idx, $e := .SomeSlice}}
       <option value="{{.}}&quot; {{with $.MyStruct.MyField}}
               {{if eq .Value $e}}selected="selected"{{end}}
           {{end}}>{{.}}</option>
   {{end}}
</select>
Salin selepas log masuk

Tindakan dengan menetapkan titik kepada nilai yang disediakan, membenarkan akses kepada medannya. Dalam kes ini, tindakan dengan digunakan untuk menyediakan akses kepada medan $.MyStruct.MyField dalam skop dalaman, tempat perbandingan dilakukan.

Atas ialah kandungan terperinci Bagaimana untuk Menguji Medan Sah dalam Templat Golang Tanpa Litar pintas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!