Wie gehe ich mit Nullwerten in Golang-Vorlagen beim Vergleich mit Slice-Elementen um?

DDD
Freigeben: 2024-10-25 12:35:03
Original
229 Leute haben es durchsucht

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

Umgang mit Nullwerten in Golang-Vorlagen

Szenario

Im Datenbank-/SQL-Paket von Golang helfen Null[Type]-Strukturen beim Umgang mit Datenbankwerten und deren möglichen Werten Nullwerte. Das Testen auf Nullwerte kann jedoch eine Herausforderung sein. Die Verwendung von .Value zum Drucken von SQL-Feldern ist unkompliziert, aber die Auswertung anhand von Werten in komplexeren Szenarien kann zu Problemen führen.

Problem

Beachten Sie den folgenden Vorlagencode:

<select name="y">
   {{ range .SomeSlice }}
       <option value="{{ . }}" {{ if eq $.MyStruct.MyField.Value .}}selected="selected"{{ end }}></option>
   {{ end }}
</select>
Nach dem Login kopieren

Dieser Code versucht, das ausgewählte Attribut basierend auf der Gleichheit von $.MyStruct.MyField.Value und . festzulegen. Wenn .MyField jedoch nicht gültig ist, tritt ein Fehler auf.

Lösung

Es gibt zwei Lösungen für dieses Problem.

Verwendung verschachtelter if-Anweisungen

{{if $.MyStruct.MyField}}
    {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}}
{{end}}
Nach dem Login kopieren

Verwendung der with-Direktive

<select name="y">
   {{range $idx, $e := .SomeSlice}}
       <option value="{{.}}">{{with $.MyStruct.MyField}}
               {{if eq .Value $e}}selected="selected"{{end}}
           {{end}}</option>
   {{end}}
</select>
Nach dem Login kopieren

Hinweis:

Null[Type]-Strukturen sind ungleich Null. Überprüfen Sie daher das Feld „Gültig“, um festzustellen, ob Value() einen Wert ungleich Null zurückgibt.

{{if $.MyStruct.MyField.Valid}}
    {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}}
{{end}}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Nullwerten in Golang-Vorlagen beim Vergleich mit Slice-Elementen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!