ホームページ >バックエンド開発 >Golang >Go データベース構造体で Null 許容時刻値を処理する方法?

Go データベース構造体で Null 許容時刻値を処理する方法?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-10 14:40:14628ブラウズ

How to Handle Nullable Time Values in Go Database Structs?

Null 許容時刻値の処理

Go で Null 許容データベース列を操作する場合、構造体でそれらを表現するという課題に遭遇する可能性があります。次のような構造体を考えてみましょう:

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

ここでは、RemindAt フィールドは、Null 許容値に対応するポインターとしてマークされています。ただし、これにより、コード内で CreatedAt と RemindAt を区別する必要が生じます。

より洗練された解決策は、Null 許容値を処理する特殊な型を使用することです。 pq ライブラリはこの目的のために pq.NullTime を提供し、Go 1.13 の標準ライブラリでは sql.NullTime が導入されました。

pq.NullTime を使用すると、構造体を次のように定義できます。

import (
    "time"

    "github.com/lib/pq"
)

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

これにより、明示的なポインター処理を必要とせずに、Null 許容値をシームレスに操作できるようになります。 pq.NullTime 型は Scanner インターフェイスと Valuer インターフェイスを実装し、データベース操作で使用できるようにします。

以上がGo データベース構造体で Null 許容時刻値を処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。