Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menguji Medan Sah dalam Templat Golang Tanpa Litar pintas?

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

DDD
DDDasal
2024-10-26 05:34:31481semak imbas

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}}

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>

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!

Kenyataan:
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