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
199 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!

sumber:php.cn
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