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

Comment puis-je gérer avec élégance les valeurs temporelles nullables dans Go Structs ?

DDD
DDDoriginal
2024-12-18 20:33:14787parcourir

How Can I Elegantly Handle Nullable Time Values in Go Structs?

Gestion des valeurs temporelles nullables dans les structures Go

Dans Go, lorsqu'ils travaillent avec des valeurs datetime nullables à partir d'une base de données, les développeurs sont souvent confrontés au défi de gérer la distinction entre un valide temps et une valeur nulle. Les champs structurels représentant des dates nullables peuvent être déclarés comme un pointeur vers time.Time pour autoriser la valeur nulle. Cependant, cela nécessite que le code vérifie explicitement la différence entre la présence d'une heure valide et une valeur nulle.

Existe-t-il une approche plus élégante et concise pour gérer les valeurs de temps nullables dans les structures Go ?

Utilisation d'un type d'heure nullable compatible avec la base de données

Pour résoudre ce problème, la réponse suggère d'exploiter le type pq.NullTime du populaire Bibliothèque github.com/jackc/pgx/v4 pour PostgreSQL. Ce type fournit une représentation améliorée des valeurs de temps nullables, avec un indicateur booléen valide qui indique si la valeur de temps est valide ou nulle.

type NullTime struct {
    Time  time.Time
    Valid bool
}

Avec pq.NullTime, l'accès et la manipulation des valeurs de temps nullables deviennent bien plus pratique. L'analyse à partir de la base de données et la mise en mémoire tampon vers la base de données sont gérées de manière transparente par les méthodes Scan et Value respectivement.

Prise en charge de la bibliothèque standard à partir de Go 1.13

Pour les versions Go 1.13 et supérieures, la bibliothèque standard introduite sql.NullTime, qui fournit des fonctionnalités similaires à pq.NullTime. Il offre les mêmes champs Time et Valid, ainsi que les méthodes Scan et Value pour les interactions avec la base de données.

En utilisant des types d'heure nullables prenant en charge la base de données comme pq.NullTime ou sql.NullTime, les développeurs peuvent écrire un Go plus propre et plus idiomatique. code lorsque vous travaillez avec des valeurs datetime nullables à partir de bases 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!

Déclaration:
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