Maison  >  Article  >  développement back-end  >  Comment gérer les valeurs nulles dans les modèles Golang lors de la comparaison avec les éléments Slice ?

Comment gérer les valeurs nulles dans les modèles Golang lors de la comparaison avec les éléments Slice ?

DDD
DDDoriginal
2024-10-25 12:35:03289parcourir

How to Handle Null Values in Golang Templates when Comparing with Slice Elements?

Gestion des valeurs nulles dans les modèles Golang

Scénario

Dans le package base de données/sql de Golang, les structures Null[Type] aident à gérer les valeurs de base de données et leurs possibles valeurs nulles. Cependant, tester les valeurs nulles peut s’avérer difficile. Utiliser .Value pour imprimer des champs SQL est simple, mais évaluer des valeurs dans des scénarios plus complexes peut entraîner des problèmes.

Problème

Considérez le code de modèle suivant :

<select name="y">
   {{ range .SomeSlice }}
       <option value="{{ . }}" {{ if eq $.MyStruct.MyField.Value .}}selected="selected"{{ end }}></option>
   {{ end }}
</select>

Ce code tente de définir l'attribut sélectionné en fonction de l'égalité de $.MyStruct.MyField.Value et .. Cependant, si .MyField n'est pas valide, une erreur se produit.

Solution

Il existe deux solutions à ce problème.

Utilisation des instructions if imbriquées

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

Utilisation de la directive with

<select name="y">
   {{range $idx, $e := .SomeSlice}}
       <option value="{{.}}">{{with $.MyStruct.MyField}}
               {{if eq .Value $e}}selected="selected"{{end}}
           {{end}}</option>
   {{end}}
</select>

Remarque :

Les structures Null[Type] ne sont pas nulles, alors vérifiez le champ Valide pour déterminer si Value() renverra une valeur non nulle.

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

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