Golang-Vorlagentest auf gültige Felder
Problem:
Beim Versuch, auf die zu testen Wenn in einer Golang-Vorlage mithilfe der und-Vorlagenfunktion ein gültiges Feld vorhanden ist, sind mehrere gängige Methoden fehlgeschlagen. Dieses Verhalten ist auf die Tatsache zurückzuführen, dass und im Gegensatz zum &&-Operator keine Kurzschlussauswertung erfolgt, was zu Fehlern wie „Ungültiger Typ für Vergleich“ führt, wenn versucht wird, ein Nullfeld mit einem Wert zu vergleichen.
Lösung :
Aufgrund der nicht kurzschlussfreien Auswertung von und in Vorlagen müssen alternative Vorgehensweisen gewählt werden. Hier sind zwei Methoden, die für dieses Szenario verwendet werden können:
1. Verschachtelte if-Anweisungen:
{{if $.MyStruct.MyField}} {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}} {{end}}
Bei diesem Ansatz prüft die äußere if-Anweisung, ob $.MyStruct.MyField existiert, und die innere if-Anweisung prüft, ob ihr Wert dem gewünschten Wert entspricht. Dadurch wird sichergestellt, dass der Vergleich nur durchgeführt wird, wenn das Feld nicht Null ist.
2. with Action:
<select name="y"> {{range $idx, $e := .SomeSlice}} <option value="{{.}}" {{with $.MyStruct.MyField}} {{if eq .Value $e}}selected="selected"{{end}} {{end}}>{{.}}</option> {{end}} </select>
Die with-Aktion setzt den Punkt auf den bereitgestellten Wert und ermöglicht so den Zugriff auf seine Felder. In diesem Fall wird die with-Aktion verwendet, um Zugriff auf das Feld $.MyStruct.MyField innerhalb des inneren Bereichs bereitzustellen, in dem der Vergleich durchgeführt wird.
Das obige ist der detaillierte Inhalt vonWie kann man in Golang-Vorlagen auf gültige Felder testen, ohne einen Kurzschluss zu verursachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!