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

Susan Sarandon
Lepaskan: 2024-10-24 11:50:01
asal
317 orang telah melayarinya

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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!