Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengendalikan Medan Masa Nullable dalam Go dengan Elegan?

Bagaimanakah Saya Boleh Mengendalikan Medan Masa Nullable dalam Go dengan Elegan?

Linda Hamilton
Linda Hamiltonasal
2024-12-09 03:16:15828semak imbas

How Can I Elegantly Handle Nullable Time Fields in Go?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn