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

Comment comparer en toute sécurité les valeurs des champs « sql.Null[Type] » dans les modèles Go ?

Patricia Arquette
Libérer: 2024-10-28 05:36:30
original
472 Les gens l'ont consulté

How to  Safely Compare Values from  `sql.Null[Type]` Fields in Go Templates?

Test des champs valides dans les modèles Go

Dans le package base de données/sql de Go, les structures Null[Type] facilitent le mappage des valeurs de base de données avec lesquelles coder prise en charge nulle. Cependant, tester la nullité d'un champ (c'est-à-dire lorsque sa propriété Valid est fausse) pose certains défis.

L'approche recommandée pour afficher un champ SQL consiste à utiliser la propriété .Value, telle que :

{{ .MyStruct.MyField.Value }}
Copier après la connexion

Pour les scénarios plus complexes impliquant des comparaisons de valeurs, l'approche peut échouer si .MyField n'est pas valide, ce qui entraîne une erreur « type non valide pour la comparaison ». Au départ, tester si .MyField est nul avant de faire la comparaison semble être une solution simple. Cependant, cette méthode échoue avec la même erreur.

La fonction and dans les modèles Go devrait être capable de gérer de telles situations. Cependant, dans les versions antérieures de Go (< 1.18), le court-circuit n'est pas évalué et tous ses arguments sont toujours évalués. Ainsi, même si la condition était évaluée à false si $.MyStruct.MyField est nul, l'eq $.MyStruct.MyField.Value . l'expression est toujours évaluée, déclenchant l'erreur.

Pour résoudre ce problème, vous pouvez utiliser plusieurs actions {{if}} :

{{if $.MyStruct.MyField}}
    {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}}
{{end}}
Copier après la connexion

Vous pouvez également utiliser le {{with} }, bien qu'elle définisse le point et nécessite de la prudence :

<select name="y">
   {{range $idx, $e := .SomeSlice}}
       <option value="{{.}}&quot; {{with $.MyStruct.MyField}}
               {{if eq .Value $e}}selected="selected"{{end}}
           {{end}}>{{.}}</option>
   {{end}}
</select></p>
<p>De plus, étant donné que les types sql.NullXX sont des valeurs de structure qui ne peuvent pas être nulles, il est essentiel de vérifier leur champ Valid pour déterminer si leur méthode Value() renverra une valeur non nulle :</p>
<pre class="brush:php;toolbar:false">{{if $.MyStruct.MyField.Valid}}
    {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}}
{{end}}
Copier après la connexion

Ces techniques vous permettent de tester efficacement l'existence de champs valides et de comparer leurs valeurs dans les modèles Go.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!