Dans Go, lorsque vous travaillez avec des structures, il est essentiel de faire la distinction entre les valeurs qui ne sont pas définies ( appelés « nil ») et ceux qui sont explicitement vides (par exemple, une chaîne vide). Cette distinction devient cruciale lors de l'interaction avec des bases de données ou de la validation des données.
Considérez l'exemple suivant :
<code class="go">type Organisation struct { Category string Code string Name string }</code>
Si vous souhaitez déterminer si la catégorie a été défini, vous ne pouvez pas simplement vérifier si sa valeur est vide car même lorsqu'il est défini sur une chaîne vide, il retournera toujours false.
Une approche est pour utiliser des pointeurs pour les champs qui peuvent être non définis. Par défaut, la valeur d'un pointeur est nulle, ce qui indique qu'il ne pointe vers aucune valeur valide. Cela vous permet de distinguer facilement les valeurs non définies et non vides.
<code class="go">type Organisation struct { Category *string // Pointer to a string Code *string // Pointer to a string Name *string // Pointer to a string }</code>
Si le champ Catégorie n'est pas défini, la valeur de son pointeur sera nulle. Cependant, l'utilisation de pointeurs présente certaines limites, telles que l'ajout de complexité et une confusion potentielle lors de l'accès aux valeurs réelles.
Lorsque vous traitez des bases de données, il est courant de rencontrer des valeurs nulles. . Pour les gérer correctement, pensez à utiliser une bibliothèque tierce telle que le package database/sql et son type sql.NullString.
<code class="go">type NullString struct { String string Valid bool }</code>
sql.NullString vous permet de représenter à la fois des valeurs de chaîne nulles et non nulles. . Son champ String contient la valeur réelle, tandis que Valid indique si la valeur est nulle ou non. Ce type fournit un moyen pratique de gérer les valeurs nulles 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!