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