Heim >Backend-Entwicklung >Golang >Wie kann man in Golang-Vorlagen auf gültige Felder testen, ohne einen Kurzschluss zu verursachen?

Wie kann man in Golang-Vorlagen auf gültige Felder testen, ohne einen Kurzschluss zu verursachen?

DDD
DDDOriginal
2024-10-26 05:34:31587Durchsuche

How to Test for Valid Fields in Golang Templates Without Short-Circuiting?

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="{{.}}&quot; {{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!

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