Membezakan Antara Nilai Tidak Tetap dan Kosong dalam Go Structs
Dalam Go, semasa mentakrifkan struct, anda mungkin menghadapi keperluan untuk membezakan antara nilai yang sengaja tidak ditetapkan dan nilai yang kosong. Ini boleh menjadi kritikal untuk kegigihan pangkalan data dan memastikan pengendalian data yang tepat.
Pertimbangkan contoh berikut:
<code class="go">type Organisation struct { Category string Code string Name string }</code>
Katakanlah anda ingin menentukan sama ada medan Kategori tidak pernah ditetapkan atau sengaja ditetapkan sebagai rentetan kosong. Menggunakan penunjuk untuk medan (cth., *rentetan) tidak akan menyelesaikan masalah ini, kerana nilai sifar untuk penunjuk adalah sifar, yang tidak dapat membezakan antara nilai yang tidak ditetapkan dan kosong.
Untuk menangani perkara ini, anda boleh menggunakan jenis tersuai seperti sql.NullString daripada pakej pangkalan data/sql. Ia menjejaki keadaan NULL dan membolehkan anda membezakan antara senario berikut:
Semasa pengimbasan pangkalan data dan pengikatan parameter, jenis sql.NullString mengendalikan keadaan NULL secara automatik.
Contohnya, untuk mengimbas ke dalam medan NullString:
<code class="go">err := db.QueryRow("SELECT category FROM organisations WHERE id = ?", id).Scan(&org.Category)</code>
Untuk mengikat nilai NullString pada parameter pangkalan data:
<code class="go">_, err := db.Exec("INSERT INTO organisations (category) VALUES (?)", org.Category)</code>
Pendekatan ini membolehkan anda membezakan antara nilai yang tidak ditetapkan dan kosong serta memastikan kegigihan pangkalan data yang tepat.
Atas ialah kandungan terperinci Bagaimana Membezakan Antara Nilai Tidak Tetap dan Kosong dalam Go Structs?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!