Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Membezakan Antara Nilai Tidak Tetap dan Kosong dalam Go Structs?

Bagaimana Membezakan Antara Nilai Tidak Tetap dan Kosong dalam Go Structs?

Susan Sarandon
Susan Sarandonasal
2024-10-24 12:58:02696semak imbas

How to Distinguish Between Unset and Empty Values in Go Structs?

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:

  • tidak ditetapkan: NullString{String: "", Sah: false}
  • rentetan kosong: NullString{String: "", Sah: true}
  • rentetan bukan kosong: NullString{String: "value", Sah: true}

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!

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