Heim > Artikel > Backend-Entwicklung > Warum können Sie Go-Strukturen nicht mithilfe von Auftragsoperatoren vergleichen?
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!