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 サイトの他の関連記事を参照してください。