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!