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