Gestion des champs nullables avec "Nullable Time.Time"
Lorsque vous travaillez avec des enregistrements de base de données, il est courant de rencontrer des colonnes nullables. Par défaut, les pointeurs sont utilisés pour représenter les champs nullables dans Go, comme le démontre la structure de rappel suivante :
type Reminder struct { Id int CreatedAt time.Time RemindedAt *time.Time SenderId int ReceiverId int }
Cependant, l'utilisation de pointeurs introduit la nécessité de faire la distinction entre les valeurs nulles et non nullables, ce qui rend le code plus complexe. Existe-t-il une manière plus élégante de gérer les champs nullables ?
La réponse réside dans l'utilisation de types spécialisés conçus pour gérer les valeurs nullables. Un de ces types est pq.NullTime de la bibliothèque lib/pq. Alternativement, Go 1.13 a introduit le type de bibliothèque standard sql.NullTime, qui peut également être utilisé.
Voici un bref aperçu du fonctionnement de pq.NullTime :
type NullTime struct { Time time.Time Valid bool // Valid is true if Time is not NULL }
pq.NullTime implémente le Interfaces Scanner et Valuer, lui permettant de lire et d'écrire des valeurs nullables à partir de la base de données. Cela vous permet de représenter de manière transparente des champs datetime nullables dans votre structure Go sans avoir besoin de pointeurs ou de vérifications conditionnelles.
Pour utiliser pq.NullTime ou sql.NullTime, remplacez simplement *time.Time par le type approprié dans votre Structure de rappel. Cela fournira un moyen plus simple et plus robuste de gérer les champs nullables dans votre base de code.
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!