Maison  >  Article  >  développement back-end  >  Comment tester les champs valides dans les modèles Golang sans court-circuit ?

Comment tester les champs valides dans les modèles Golang sans court-circuit ?

DDD
DDDoriginal
2024-10-26 05:34:31481parcourir

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

Test du modèle Golang pour les champs valides

Problème :

Lors de la tentative de test du existence d'un champ valide dans un modèle Golang utilisant la fonction et modèle, plusieurs méthodes courantes ont échoué. Ce comportement vient du fait que and n'est pas évalué en court-circuit, contrairement à l'opérateur &&, provoquant des erreurs telles que "type invalide pour comparaison" lors de la tentative de comparaison d'un champ nul à une valeur.

Solution :

En raison de l'évaluation sans court-circuit de et dans les modèles, des approches alternatives doivent être adoptées. Voici deux méthodes qui peuvent être utilisées pour ce scénario :

1. Déclarations if imbriquées :

{{if $.MyStruct.MyField}}
    {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}}
{{end}}

Dans cette approche, l'instruction if externe vérifie si $.MyStruct.MyField existe, et l'instruction if interne vérifie si sa valeur est égale à la valeur souhaitée. Cela garantit que la comparaison n'est effectuée que si le champ n'est pas nul.

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>

L'action with définit le point sur la valeur fournie, permettant l'accès à ses champs. Dans ce cas, l'action with est utilisée pour donner accès au champ $.MyStruct.MyField dans la portée interne, où la comparaison est effectuée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn