Maison > développement back-end > Golang > 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
Libérer: 2024-10-26 05:34:31
original
587 Les gens l'ont consulté

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}}
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal