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.
Nilai antara muka adalah setanding. Dua nilai antara muka dianggap sama jika:
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.
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.
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!