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