Rumah >pembangunan bahagian belakang >Golang >Mengapa Perbandingan Tatasusunan Penunjuk dengan Struktur Kosong Menghasilkan Keputusan yang Tidak Konsisten?
Mengapa Perbandingan Tatasusunan dengan Struktur Kosong Menghasilkan Keputusan Berbeza
Memandangkan tatasusunan penunjuk kepada struct kosong, mengapa perbandingan kesamaan tatasusunan kadangkala menilai kepada benar dan kadangkala kepada palsu?
Penerokaan Gelagat
package main import "fmt" type myStruct struct{} func main() { s, ss := myStruct{}, myStruct{} arr1 := [6]*myStruct{&s} arr2 := [6]*myStruct{&ss} fmt.Println(&s == &ss, arr1 == arr2) // Produces mixed results (e.g., false, true or true, false) l, ll := myStruct{A: 1}, myStruct{A: 1} arr3 := [6]*myStruct{&l} arr4 := [6]*myStruct{&ll} fmt.Println(&l == &ll, arr3 == arr4) // Always evaluates to false }
Penjelasan
Spesifikasi bahasa Go menyatakan bahawa:
Analisis Tingkah Laku dan Melarikan Diri Dinamik
Tingkah laku boleh dijelaskan dengan mempertimbangkan analisis melarikan diri yang dilakukan oleh Go pengkompil.
Implikasi
Atas ialah kandungan terperinci Mengapa Perbandingan Tatasusunan Penunjuk dengan Struktur Kosong Menghasilkan Keputusan yang Tidak Konsisten?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!