Maison > développement back-end > Golang > Comment puis-je gérer avec élégance les champs temporels nullables dans Go ?

Comment puis-je gérer avec élégance les champs temporels nullables dans Go ?

Linda Hamilton
Libérer: 2024-12-09 03:16:15
original
821 Les gens l'ont consulté

How Can I Elegantly Handle Nullable Time Fields in Go?

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
}
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal