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