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.
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.
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!