Bagaimana Mengendalikan Nilai Null dalam Templat Golang apabila Membandingkan dengan Elemen Slice?

DDD
Lepaskan: 2024-10-25 12:35:03
asal
280 orang telah melayarinya

How to Handle Null Values in Golang Templates when Comparing with Slice Elements?

Mengendalikan Nilai Null dalam Templat Golang

Senario

Dalam pakej pangkalan data/sql Golang, struct Null[Type] membantu mengendalikan nilai pangkalan data dan kemungkinannya nilai nol. Walau bagaimanapun, ujian untuk nilai nol boleh mencabar. Menggunakan .Value untuk mencetak medan SQL adalah mudah, tetapi menilai terhadap nilai dalam senario yang lebih kompleks boleh membawa kepada isu.

Isu

Pertimbangkan kod templat berikut:

<select name="y">
   {{ range .SomeSlice }}
       <option value="{{ . }}" {{ if eq $.MyStruct.MyField.Value .}}selected="selected"{{ end }}></option>
   {{ end }}
</select>
Salin selepas log masuk

Kod ini cuba menetapkan atribut yang dipilih berdasarkan kesamaan $.MyStruct.MyField.Value dan .. Walau bagaimanapun, jika .MyField tidak Sah, ralat berlaku.

Penyelesaian

Terdapat dua penyelesaian untuk isu ini.

Menggunakan Nested if Statements

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

Menggunakan dengan Arahan

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

Nota:

Struktur Null[Type] adalah bukan nol, jadi semak medan Sah untuk menentukan sama ada Value() akan mengembalikan nilai bukan nol.

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

Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai Null dalam Templat Golang apabila Membandingkan dengan Elemen Slice?. 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