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.
Pertimbangkan kod templat berikut:
<select name="y"> {{ range .SomeSlice }} <option value="{{ . }}" {{ if eq $.MyStruct.MyField.Value .}}selected="selected"{{ end }}></option> {{ end }} </select>
Kod ini cuba menetapkan atribut yang dipilih berdasarkan kesamaan $.MyStruct.MyField.Value dan .. Walau bagaimanapun, jika .MyField tidak Sah, ralat berlaku.
Terdapat dua penyelesaian untuk isu ini.
Menggunakan Nested if Statements
{{if $.MyStruct.MyField}} {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}} {{end}}
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>
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}}
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!