Rumah >pembangunan bahagian belakang >Golang >Bagaimana Membezakan Dengan Betul Antara Nilai Tidak Ditetapkan berbanding Nilai Kosong dalam Go?

Bagaimana Membezakan Dengan Betul Antara Nilai Tidak Ditetapkan berbanding Nilai Kosong dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-10-25 05:26:02526semak imbas

How to Distinguish Properly Between Not Set vs. Empty Values in Go?

Membezakan dengan Betul Antara Nilai Tidak Ditetapkan berbanding Nilai Kosong

Apabila bekerja dengan struct dalam Go, adalah penting untuk membezakan antara nilai yang tidak pernah ditetapkan dan nilai yang hanyalah kosong, seperti rentetan kosong.

Pertimbangkan struct berikut:

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

Untuk membezakan antara kategori yang tidak pernah ditetapkan dan yang kosong, satu pendekatan mungkin menggunakan penunjuk kepada rentetan:

<code class="go">type Organisation struct {
    Category *string
    Code     *string
    Name     *string
}</code>

Walau bagaimanapun, nilai sifar untuk rentetan dalam Go ialah rentetan kosong, bermakna tidak mungkin untuk membezakan antara kedua-dua kes itu.

Apabila berurusan dengan pangkalan data, adalah penting untuk memisahkan antara NULL dan rentetan kosong. Untuk tujuan ini, pakej pangkalan data/sql menawarkan jenis sql.NullString:

<code class="go">type NullString struct {
        String string
        Valid  bool // Valid is true if String is not NULL
}</code>

Dengan mengimbas ke dalam jenis ini dan menggunakannya sebagai parameter pertanyaan, pakej pangkalan data/sql menguruskan keadaan NULL untuk anda, berkesan membezakan antara nilai yang tidak ditetapkan dan kosong.

Atas ialah kandungan terperinci Bagaimana Membezakan Dengan Betul Antara Nilai Tidak Ditetapkan berbanding Nilai Kosong dalam Go?. 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