Heim  >  Artikel  >  Backend-Entwicklung  >  Warum können Sie Go-Strukturen nicht mithilfe von Auftragsoperatoren vergleichen?

Warum können Sie Go-Strukturen nicht mithilfe von Auftragsoperatoren vergleichen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-08 12:58:02284Durchsuche

Why Can't You Compare Go Structs Using Order Operators?

Go-Strukturvergleich – Geordnete vs. Vergleichbare verstehen

Die Go-Programmiersprachenspezifikation besagt, dass eine Struktur, die nur vergleichbare Felder umfasst, vergleichbar sein sollte. Beim Versuch, Strukturen mit geordneten Operatoren zu vergleichen, tritt jedoch ein Problem auf.

Beachten Sie den folgenden Code:

package main

type Student struct {
  Name  string
  Score uint8
}

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

  if alice >= carol {
    println("Alice >= Carol")
  } else {
    println("Alice < Carol")
  }
}

Erwartungsgemäß wird dieser Code aufgrund der vergleichbaren Felder erfolgreich kompiliert. Versuche, Strukturen mit dem Operator >= zu vergleichen, schlagen jedoch fehl mit:

invalid operation: alice >= carol (operator >= not defined on struct)

In Go sind Strukturen vergleichbar, aber nicht geordnet.Die Spezifikation stellt dies klar:

"Die Ordnungsoperatoren <, <=, > und >= gelten für Operanden, die sind geordnet."

Strukturen können daher zwar auf Gleichheit verglichen werden, sie können jedoch nicht mit Operatoren wie >= geordnet werden, wie im obigen Beispiel zu sehen ist.

Das obige ist der detaillierte Inhalt vonWarum können Sie Go-Strukturen nicht mithilfe von Auftragsoperatoren vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn