Mengendalikan Nilai Masa Nullable dengan Structs in Go
Apabila bekerja dengan struktur data yang mungkin mengandungi nilai masa nullable, adalah penting untuk memastikan pengendalian yang betul daripada nilai-nilai ini. Pertimbangkan struct berikut:
type Reminder struct { Id int CreatedAt time.Time RemindedAt *time.Time SenderId int ReceiverId int }
Di sini, medan RemindedAt diisytiharkan sebagai penunjuk kepada masa. Masa, kerana ia mungkin menjadi batal. Walau bagaimanapun, perbezaan ini memerlukan kod untuk mengendalikan perbezaan antara CreatedAt dan RemindedAt.
Untuk menangani perkara ini, Go menyediakan beberapa pendekatan untuk mengendalikan nilai masa nullable secara elegan:
Menggunakan pq.NullTime
Pakej pq daripada pemacu PostgreSQL Go menawarkan pq.NullTime taip. Ia terdiri daripada masa.Nilai masa dan bendera boolean sah yang menunjukkan sama ada masa itu sah (bukan NULL).
import "github.com/lib/pq" type Reminder struct { Id int CreatedAt time.Time RemindedAt pq.NullTime SenderId int ReceiverId int }
Dalam kes ini, RemindedAt ialah nilai pq.NullTime dan kod itu boleh menyemak benderanya Sah untuk menentukan sama ada masa ditetapkan.
Menggunakan sql.NullTime (Go 1.13 dan ke atas)
Bermula dengan Go 1.13, perpustakaan standard memperkenalkan jenis sql.NullTime, yang mempunyai tujuan yang sama dengan pq.NullTime.
import "database/sql" type Reminder struct { Id int CreatedAt time.Time RemindedAt sql.NullTime SenderId int ReceiverId int }
Kedua-dua pq.NullTime dan sql.NullTime melaksanakan antara muka yang diperlukan untuk menyokong pengimbasan pangkalan data dan pengikatan parameter, menjadikannya mudah digunakan dengan pangkalan data operasi.
Atas ialah kandungan terperinci Cara Terbaik Mengendalikan Nilai Masa Nullable dalam Go Structs?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!