Maison > développement back-end > Golang > Comment faire la distinction entre les valeurs non définies et vides dans les structures Go ?

Comment faire la distinction entre les valeurs non définies et vides dans les structures Go ?

Susan Sarandon
Libérer: 2024-10-24 12:58:02
original
842 Les gens l'ont consulté

How to Distinguish Between Unset and Empty Values in Go Structs?

Distinction entre les valeurs non définies et vides dans les structures Go

Dans Go, lors de la définition des structures, vous pouvez rencontrer le besoin de faire la distinction entre les valeurs qui sont intentionnellement non définies et les valeurs sont simplement vides. Cela peut être essentiel pour la persistance de la base de données et garantir un traitement précis des données.

Considérons l'exemple suivant :

<code class="go">type Organisation struct {
    Category string
    Code     string
    Name     string
}</code>
Copier après la connexion

Disons que vous souhaitez déterminer si le champ Catégorie n'a jamais été défini ou a été intentionnellement défini. comme une chaîne vide. L'utilisation de pointeurs pour les champs (par exemple, *string) ne résoudra pas ce problème, car la valeur zéro d'un pointeur est nulle, ce qui ne peut pas faire la distinction entre une valeur non définie et une valeur vide.

Pour résoudre ce problème, vous pouvez utiliser un type personnalisé tel que sql.NullString du package database/sql. Il garde une trace de l'état NULL et vous permet de différencier les scénarios suivants :

  • unset : NullString{String : "", Valid : false}
  • Chaîne vide : NullString{String : "", Valide : true}
  • chaîne non vide : NullString{String : "value", Valide : true}

Pendant l'analyse de la base de données et la liaison des paramètres, le type sql.NullString gère automatiquement l'état NULL.

Par exemple, pour analyser un champ NullString :

<code class="go">err := db.QueryRow("SELECT category FROM organisations WHERE id = ?", id).Scan(&org.Category)</code>
Copier après la connexion

Pour lier une valeur NullString à un paramètre de base de données :

<code class="go">_, err := db.Exec("INSERT INTO organisations (category) VALUES (?)", org.Category)</code>
Copier après la connexion

Cette approche vous permet de faire la distinction entre les valeurs non définies et vides et d'assurer une persistance précise de la base de données.

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
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