Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Go Membandingkan Nilai{} Antara Muka, Termasuk Struktur?

Bagaimanakah Go Membandingkan Nilai{} Antara Muka, Termasuk Struktur?

DDD
DDDasal
2024-12-03 10:34:11519semak imbas

How Does Go Compare Interface{} Values, Including Structs?

Membandingkan Nilai{} Antara Muka

Dalam Go, pengendali kesamaan (== dan !=) boleh digunakan untuk membandingkan nilai{} antara muka. Walau bagaimanapun, memandangkan nilai antara muka{} boleh menyimpan nilai jenis yang berbeza, adalah penting untuk memahami cara nilai ini dibandingkan.

Kesamaan Nilai Antara Muka

Nilai antara muka adalah setanding. Dua nilai antara muka dianggap sama jika:

  • Ia mempunyai jenis dinamik yang sama dan nilai dinamik yang sama, atau
  • Kedua-duanya mempunyai nilai sifar.

Kesamaan Nilai Antara Muka dengan Struktur

Dalam kes di mana nilai antara muka{} memegang struct tersuai nilai, peraturan perbandingan Go digunakan. Nilai struktur dianggap setanding jika semua medannya adalah setanding. Dua nilai struct dianggap sama jika medan bukan kosongnya mempunyai nilai yang sama.

Contoh Kod

Pertimbangkan coretan kod berikut:

type MyStruct struct {
    Field1 int
    Field2 string
}

var A = []interface{}{}
v := MyStruct{1, "Test"}

for _, i := range A {
    if i == v {
        fmt.Println("Gotcha!")
        break
    }
}

Dalam contoh ini, Operator == digunakan untuk membandingkan nilai{} antara muka (v) dengan nilai dalam sekeping antara muka{} (A). Memandangkan nilai MyStruct adalah setanding, perbandingan akan kembali benar jika medan sepadan dalam v dan elemen dalam A adalah sama.

Kesimpulan

Dengan memahami peraturan kesamaan Go untuk nilai dan struct antara muka{} , pembangun dengan yakin boleh membandingkan nilai ini dalam kod mereka. Sistem Go yang jelas dan fleksibel memastikan semakan kesaksamaan berfungsi seperti yang diharapkan, tanpa mengira jenis data asas.

Atas ialah kandungan terperinci Bagaimanakah Go Membandingkan Nilai{} Antara Muka, Termasuk Struktur?. 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