Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengesan jika Harta Struktur Telah Ditetapkan dalam Go?

Bagaimanakah Saya Boleh Mengesan jika Harta Struktur Telah Ditetapkan dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-10 19:40:17779semak imbas

How Can I Detect if a Struct Property Has Been Set in Go?

Mengesan Sifat Diubah Suai dalam Struktur

Dalam Go, menentukan sama ada sifat struct telah ditetapkan boleh menjadi mencabar. Tidak seperti bahasa lain, tiada mekanisme terbina dalam untuk menyemak nilai yang tidak dimulakan dalam struktur.

Menggunakan Penunjuk (Cadangan dyoo)

Seperti yang dinyatakan oleh dyoo, menggunakan penunjuk untuk sifat struct membolehkan anda membezakan antara nilai yang ditetapkan dan tidak ditetapkan. Jika penunjuk adalah sifar, nilai itu dianggap tidak ditetapkan.

Contoh dengan Penunjuk:

type MyStruct struct {
    Property *string
}

// ...

if s1.Property != nil {
    // do something with this
}

Menggunakan Rentetan Kosong (Respons Penyelenggara)

Jika anda lebih suka menggunakan rentetan dan bukannya penunjuk, anda boleh membandingkan nilai dengan rentetan kosong untuk menentukan sama ada ia telah ditetapkan.

Contoh dengan Rentetan:

type MyStruct struct {
    Property string
}

// ...

if s1.Property != "" {
    // do something with this
}

Dalam sampel kod yang disediakan, s1.Property mempunyai nilai bukan kosong dan akan dianggap ditetapkan, manakala s2.Hartanah kosong dan akan dianggap belum ditetapkan.

Alternatif Kaedah

Selain pendekatan yang dinyatakan, anda boleh meneroka pilihan lain seperti menggunakan refleksi atau mentakrifkan fungsi penetap anda sendiri yang menjejaki perubahan dalam nilai hartanah. Walau bagaimanapun, kaedah ini mungkin memerlukan kod dan kerumitan tambahan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan jika Harta Struktur Telah Ditetapkan 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