Maison > développement back-end > Golang > le corps du texte

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

DDD
Libérer: 2024-10-25 12:35:03
original
281 Les gens l'ont consulté

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

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

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

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

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