首頁 >後端開發 >Golang >當 Go 結構體的字段可比較時,為什麼我不能將它們與 `>=` 進行比較?

當 Go 結構體的字段可比較時,為什麼我不能將它們與 `>=` 進行比較?

Patricia Arquette
Patricia Arquette原創
2024-11-10 19:58:03176瀏覽

Why Can't I Compare Go Structs with `>=` 當它們的欄位具有可比較性時? 
=` 當他們的領域具有可比性時? " />

Go 結構體比較:意外錯誤

Go 程式語言規範規定,只有可比較字段的結構體應該具有可比較性。但是,以下程式碼無法編譯:

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")
  }
}

錯誤訊息是:

無效操作:alice >= carol (operator >= not Defined on struct)

此錯誤與規範,因為如果它們的字段是,結構應該是可比較的。它們是無序的。比較的,但不是有序的:

相等運算符== 和!= 適用於可比較的操作數。 .

如果結構體的所有字段都可比較,則結構體值也可比較。 >

因此,您不能使用>= 來比較Student 結構體,即使它們的欄位是可比較的。

以上是當 Go 結構體的字段可比較時,為什麼我不能將它們與 `>=` 進行比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn