Maison > développement back-end > Golang > Comment puis-je gérer efficacement les colonnes Datetime Nullables dans Go Structs ?

Comment puis-je gérer efficacement les colonnes Datetime Nullables dans Go Structs ?

DDD
Libérer: 2024-12-19 19:00:21
original
805 Les gens l'ont consulté

How Can I Efficiently Handle Nullable Datetime Columns in Go Structs?

Gestion datetime dans les structures Go

Dans Go, lors du remplissage d'une structure avec un enregistrement de base de données, la gestion des colonnes datetime nullables peut devenir un problème défi. Considérez la structure suivante :

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt *time.Time
    SenderId   int
    ReceiverId int
}
Copier après la connexion

Dans cet exemple, RemendedAt est représenté comme un pointeur pour gérer les valeurs nullables. Cependant, cette approche introduit la nécessité de faire la distinction entre les valeurs non nulles et nulles dans le code, ce qui peut s'avérer fastidieux.

Solution améliorée

Pour résoudre ce problème, allez propose les types pq.NullTime ou sql.NullTime (dans Go 1.13), qui offrent une interface plus élégante. approche :

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt pq.NullTime // or sql.NullTime
    SenderId   int
    ReceiverId int
}
Copier après la connexion

NullTime définit les champs suivants :

type NullTime struct {
    Time  time.Time
    Valid bool // Valid is true if Time is not NULL
}
Copier après la connexion

Lors de l'analyse d'un enregistrement de base de données, le champ Valide indique si Time a une valeur datetime valide ou est nulle.

Utilisation

Pour numériser une ligne de base de données dans un rappel struct :

row := db.QueryRow("...")
err := row.Scan(&id, &reminder.CreatedAt, &reminder.RemindedAt, &senderId, &receiverId)
Copier après la connexion

Pour accéder au champ RemendedAt, vérifiez le champ Valid :

if reminder.RemindedAt.Valid {
    // RemindedAt has a valid datetime value
} else {
    // RemindedAt is null
}
Copier après la connexion

Cette approche simplifie la gestion des colonnes datetime nullables dans les structures Go, éliminant ainsi le besoin d'implémenter manuellement vérification nulle.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal