Rumah > pembangunan bahagian belakang > Golang > Mengapa Saya Tidak Boleh Bandingkan Go Structs dengan `>=` Apabila Bidangnya Setanding?

Mengapa Saya Tidak Boleh Bandingkan Go Structs dengan `>=` Apabila Bidangnya Setanding?

Patricia Arquette
Lepaskan: 2024-11-10 19:58:03
asal
221 orang telah melayarinya

Why Can't I Compare Go Structs with `>=` Bila Bidang Mereka Setanding? 
=` Apabila Bidang Mereka Setanding? " />

Go Struct Comparison: Ralat Tidak Dijangka

Spesifikasi Bahasa Pengaturcaraan Go menyatakan bahawa struct dengan hanya medan yang setanding hendaklah setanding. Walau bagaimanapun, kod berikut gagal untuk susun:

type Student struct {
  Name  string // "String values are comparable and ordered, lexically byte-wise."
  Score uint8  // "Integer values are comparable and ordered, in the usual way."
}

func main() {
  alice := Student{"Alice", 98}
  carol := Student{"Carol", 72}

  if alice >= carol {
    println("Alice >= Carol")
  } else {
    println("Alice < Carol")
  }
}
Salin selepas log masuk

Mesej ralat ialah:

operasi tidak sah: alice >= carol (operator >= tidak ditakrifkan pada struct)

Ralat ini bercanggah dengan spesifikasi, kerana struct harus setanding jika medannya.

Penjelasan:

Sambil bidang daripada struct Pelajar boleh dibandingkan (menggunakan == dan !=), mereka tidak dipesan operator (<, <=, >, >=) hanya boleh digunakan pada operan yang dipesan, seperti. integer atau rentetan.

Spesifikasi Bahasa Pengaturcaraan Go dengan jelas menyatakan bahawa struct adalah setanding tetapi tidak dipesan:

Pengendali kesamaan == dan != digunakan untuk operan yang setanding.

...

  • Nilai struktur adalah setanding jika semua medannya adalah setanding. Dua nilai struct adalah sama jika medan bukan kosong yang sepadan adalah sama.

Oleh itu, anda tidak boleh menggunakan >= untuk membandingkan struct Pelajar, walaupun medannya adalah setanding.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Bandingkan Go Structs dengan `>=` Apabila Bidangnya Setanding?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan