Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit Nullwerten in Golang-Vorlagen beim Vergleich mit Slice-Elementen um?

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

DDD
DDDOriginal
2024-10-25 12:35:03214Durchsuche

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>

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

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>

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

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!

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