Maison  >  Article  >  développement back-end  >  Comment faire la différence entre les valeurs nulles et vides dans les structures Go ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-24 11:50:01306parcourir

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
}

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
}

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>

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!

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