Mengendalikan Medan Nullable dengan "Nullable Time.Time"
Apabila bekerja dengan rekod pangkalan data, adalah perkara biasa untuk menemui lajur nullable. Secara lalai, penunjuk digunakan untuk mewakili medan nullable dalam Go, seperti yang ditunjukkan dalam struct Peringatan berikut:
type Reminder struct { Id int CreatedAt time.Time RemindedAt *time.Time SenderId int ReceiverId int }
Walau bagaimanapun, menggunakan penunjuk memperkenalkan keperluan untuk membezakan antara nilai nol dan tidak boleh batal, menjadikan kod lebih kompleks. Adakah terdapat cara yang lebih elegan untuk mengendalikan medan nullable?
Jawapannya terletak pada penggunaan jenis khusus yang direka untuk mengendalikan nilai nullable. Satu jenis sedemikian ialah pq.NullTime daripada perpustakaan lib/pq. Sebagai alternatif, Go 1.13 memperkenalkan jenis perpustakaan standard sql.NullTime, yang juga boleh digunakan.
Berikut ialah gambaran ringkas tentang cara pq.NullTime berfungsi:
type NullTime struct { Time time.Time Valid bool // Valid is true if Time is not NULL }
pq.NullTime melaksanakan Antara muka Pengimbas dan Penilai, membolehkannya membaca dan menulis nilai yang boleh dibatalkan daripada pangkalan data. Ini membolehkan anda dengan lancar mewakili medan datetime boleh batal dalam struct Go anda tanpa memerlukan penunjuk atau semakan bersyarat.
Untuk menggunakan pq.NullTime atau sql.NullTime, cuma gantikan *time.Time dengan jenis yang sesuai dalam anda Struktur peringatan. Ini akan memberikan cara yang lebih mudah dan mantap untuk mengendalikan medan yang boleh dibatalkan dalam pangkalan kod anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Medan Masa Nullable dalam Go dengan Elegan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!