Maison >développement back-end >Golang >Comment gérer les valeurs temporelles nullables dans les structures de base de données Go ?

Comment gérer les valeurs temporelles nullables dans les structures de base de données Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 14:40:14628parcourir

How to Handle Nullable Time Values in Go Database Structs?

Gestion des valeurs temporelles nullables

Lorsque vous travaillez avec des colonnes de base de données nullables dans Go, vous pouvez rencontrer le défi de les représenter dans vos structures. Considérons une structure comme la suivante :

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt *time.Time
    SenderId   int
    ReceiverId int
}

Ici, le champ ReendedAt est marqué comme un pointeur pour accueillir les valeurs nullables. Cependant, cela introduit la nécessité de faire la distinction entre CreatedAt et RemendedAt dans votre code.

Une solution plus élégante consiste à utiliser des types spécialisés qui gèrent les valeurs nullables. La bibliothèque pq fournit pq.NullTime à cet effet, et la bibliothèque standard de Go 1.13 a introduit sql.NullTime.

En utilisant pq.NullTime, vous pouvez définir votre structure comme :

import (
    "time"

    "github.com/lib/pq"
)

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt pq.NullTime
    SenderId   int
    ReceiverId int
}

Cela vous permet de travailler de manière transparente avec des valeurs nullables sans avoir besoin d'une gestion explicite du pointeur. Le type pq.NullTime implémente les interfaces Scanner et Valuer, lui permettant d'être utilisé avec des opérations de 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!

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