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

Bagaimana untuk Membezakan Antara Nilai Tiada dan Kosong dalam Go Structs?

Susan Sarandon
Susan Sarandonasal
2024-10-24 11:50:01306semak imbas

How to Differentiate Between Nil and Empty Values in Go Structs?

Membezakan Antara Nilai Tiada dan Kosong dalam Struktur Go

Dalam Go, sukar untuk membezakan antara nilai nol (iaitu, jangan sekali-kali set) dan nilai kosong atau kosong (seperti rentetan kosong). Perbezaan ini penting apabila berurusan dengan data daripada pangkalan data atau input pengguna.

Masalah:

Pertimbangkan struct Go berikut:

type Organisation struct {
    Category string
    Code     string
    Name     string
}

Jika medan kategori tidak ditetapkan atau disimpan sebagai rentetan kosong oleh pengguna, adalah penting untuk menentukan sama ada nilai ini mewakili nilai yang hilang atau pilihan pengguna kosong.

Penyelesaian:

Satu pendekatan ialah menggunakan medan penunjuk:

type Organisation struct {
    Category *string
    Code     *string
    Name     *string
}

Dengan medan penunjuk, nilai sifar mewakili medan yang tidak ditetapkan, manakala nilai bukan sifar dengan rentetan kosong menunjukkan pilihan kosong.

Pengendalian Pangkalan Data:

Dalam Go, nilai sifar untuk jenis rentetan ialah rentetan kosong. Oleh itu, adalah mustahil untuk membezakan antara medan rentetan yang tidak ditetapkan dan rentetan kosong menggunakan jenis rentetan standard. Untuk penyepaduan pangkalan data:

  • Untuk pengguna MySQL, pertimbangkan untuk menggunakan jenis pangkalan data/sql.NullString.
  • Untuk pengguna PostgreSQL, pendekatan alternatif adalah untuk menentukan jenis tersuai dalam pangkalan data menggunakan sintaks DECLARE TYPE dan kemudian menggunakan jenis Go yang sepadan untuk mewakilinya.

Contoh:

Berikut ialah contoh menggunakan sql.NullString:

<code class="go">type Organisation struct {
    Category sql.NullString
    Code     string
    Name     string
}

// Check if Category is set and not NULL
if organisation.Category.Valid && organisation.Category.String != "" {
    // Category was set and has a value
} else {
    // Category is either unset or NULL
}</code>

Pendekatan ini membolehkan anda membezakan antara nilai rentetan yang tidak ditetapkan dan kosong, memastikan pengendalian data yang betul dalam operasi pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Membezakan Antara Nilai Tiada 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