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

Comment faire la différence entre les valeurs nulles et vides dans les structures Go ?

Susan Sarandon
Libérer: 2024-10-24 11:50:01
original
316 Les gens l'ont consulté

How to Differentiate Between Nil and Empty Values in Go Structs?

Distinction entre les valeurs nulles et vides dans les structures Go

Dans Go, il peut être difficile de faire la différence entre une valeur nulle (c'est-à-dire jamais set) et une valeur vide ou vide (telle qu'une chaîne vide). Cette distinction est cruciale lorsqu'il s'agit de données provenant d'une base de données ou d'une entrée utilisateur.

Problème :

Considérez la structure Go suivante :

type Organisation struct {
    Category string
    Code     string
    Name     string
}
Copier après la connexion

Si un champ de catégorie n'est pas défini ou enregistré sous forme de chaîne vide par l'utilisateur, il est essentiel de déterminer si cette valeur représente une valeur manquante ou une sélection utilisateur vide.

Solution :

Une approche consiste à utiliser des champs de pointeur :

type Organisation struct {
    Category *string
    Code     *string
    Name     *string
}
Copier après la connexion

Avec les champs de pointeur, une valeur nulle représente un champ non défini, tandis qu'une valeur non nulle avec une chaîne vide indique une sélection vide.

Gestion de la base de données :

Dans Go, la valeur zéro pour un type de chaîne est une chaîne vide. Par conséquent, il est impossible de faire la distinction entre un champ de chaîne non défini et un champ de chaîne vide en utilisant le type de chaîne standard. Pour l'intégration de la base de données :

  • Pour les utilisateurs de MySQL, envisagez d'utiliser le type database/sql.NullString.
  • Pour les utilisateurs de PostgreSQL, une approche alternative consiste à définir un type personnalisé dans la base de données en utilisant la syntaxe DECLARE TYPE puis en utilisant un type Go correspondant pour le représenter.

Exemple :

Voici un exemple utilisant sql.NullString:

<code class="go">type Organisation struct {
    Category sql.NullString
    Code     string
    Name     string
}

// Check if Category is set and not NULL
if organisation.Category.Valid && organisation.Category.String != "" {
    // Category was set and has a value
} else {
    // Category is either unset or NULL
}</code>
Copier après la connexion

Cette approche vous permet de faire la distinction entre les valeurs de chaîne non définies et vides, garantissant ainsi une gestion correcte des données dans les opérations de 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
À 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!