ホームページ > バックエンド開発 > Golang > Go 構造体で Null 許容時刻値を最適に処理するにはどうすればよいですか?

Go 構造体で Null 許容時刻値を最適に処理するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-31 12:11:12
オリジナル
396 人が閲覧しました

How to Best Handle Nullable Time Values in Go Structs?

Go の構造体を使用した Null 許容時刻値の処理

Null 許容時刻値を含む可能性のあるデータ構造を扱う場合、適切な処理を確保することが重要ですこれらの値の。次の構造体を考えてみましょう:

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt *time.Time
    SenderId   int
    ReceiverId int
}
ログイン後にコピー

ここでは、RemindAt フィールドは null になる可能性があるため、time.Time へのポインタとして宣言されています。ただし、この区別には、CreatedAt と RemindAt の違いを処理するコードが必要です。

これに対処するために、Go では、Null 許容時刻値をエレガントに処理するためのいくつかのアプローチが提供されています。

Using pq.NullTime

PostgreSQL Go ドライバーの pq パッケージは、pq.NullTime タイプを提供します。これは、time.Time 値と、時間が有効かどうか (NULL ではない) を示す Valid ブール値フラグで構成されます。

import "github.com/lib/pq"

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt pq.NullTime
    SenderId   int
    ReceiverId int
}
ログイン後にコピー

この場合、RemindAt は pq.NullTime 値であり、コードでチェックできます。時間が設定されているかどうかを判断するための有効なフラグ。

sql.NullTime を使用する (Go 1.13 以降)

Go 1.13 以降、標準ライブラリには sql.NullTime 型が導入され、pq.NullTime と同様の目的を果たします。

import "database/sql"

type Reminder struct {
    Id         int
    CreatedAt  time.Time
    RemindedAt sql.NullTime
    SenderId   int
    ReceiverId int
}
ログイン後にコピー

両方とも pq. NullTime と sql.NullTime は、データベース スキャンとパラメータ バインディングをサポートするために必要なインターフェイスを実装し、便利にします。データベース操作で使用します。

以上がGo 構造体で Null 許容時刻値を最適に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート