Memahami Perbezaan antara *string dan sql.NullString
Dalam bidang pengaturcaraan, berurusan dengan nilai nol boleh menjadi tugas yang kompleks, terutamanya apabila berinterface dengan pangkalan data. Satu senario sedemikian timbul apabila bekerja dengan nilai nol SQL dalam Go. Untuk menyelesaikan isu ini, pembangun sering menghadapi penggunaan sama ada *string atau sql.NullString. Walau bagaimanapun, memahami perbezaan antara dua jenis data ini adalah penting.
sql.NullString: Perwakilan SQL Null Values
sql.NullString direka khusus untuk mengendalikan SQL nilai nol. Ia pada asasnya struct yang merangkum rentetan (String) dan bendera boolean (Sah) yang menunjukkan sama ada rentetan itu sah atau batal. Dalam konteks SQL, nilai nol dilambangkan dengan kata kunci khas "NULL."
Contoh Penggunaan:
var username sql.NullString // Assuming the database query retrieves a NULL value err := db.QueryRow("SELECT username from users WHERE id = 1").Scan(&username) if err == nil { if username.Valid { fmt.Println("Username:", username.String) } else { fmt.Println("Username is NULL") } }
Null Checking dengan * rentetan
Sebaliknya, *rentetan mewakili penunjuk kepada rentetan. Penunjuk nol menunjukkan bahawa nilai rentetan asas adalah batal.
var username *string // Again, assuming NULL is retrieved from the database err := db.QueryRow("SELECT username from users WHERE id = 1").Scan(&username) if err == nil { if username != nil { fmt.Println("Username:", *username) } else { fmt.Println("Username is NULL") } }
Perbezaan
Perbezaan utama antara sql.NullString dan *rentetan terletak pada pengendalian mereka terhadap nilai nol SQL. sql.NullString secara eksplisit mewakili keadaan "NULL", membenarkan pengendalian khusus bagi nilai nol. Sebaliknya, *rentetan bergantung pada kehadiran atau ketiadaan penunjuk sifar untuk menentukan ketiadaan, yang biasa digunakan dalam Go untuk mewakili nilai pilihan.
Atas ialah kandungan terperinci `*string vs. sql.NullString: Bilakah Saya Harus Menggunakan Setiap untuk Mengendalikan NULL dalam Go?`. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!