In Go gibt es keine integrierte Schnittstelle, die einen Typ erfordert, um eine Vergleichsfunktion zu implementieren. Sie können jedoch Ihre eigene Schnittstelle erstellen, um einen vergleichbaren Typ zu definieren.
Ein gängiger Ansatz besteht darin, eine Schnittstelle mit den folgenden Methoden zu erstellen:
type Comparable[T comparable] interface { Compare(other T) int }
Wobei T der Typ ist, der die Schnittstelle implementiert, und int ein Vergleichsergebnis darstellt (-1, 0, 1).
Damit ein benutzerdefinierter Typ als vergleichbar gilt, Es muss die Comparable-Schnittstelle implementieren:
type MyType struct { // ... } func (t MyType) Compare(other MyType) int { // ... }
Sobald Sie eine Comparable-Schnittstelle definiert haben, können Sie damit überprüfen, ob ein Typ vergleichbar ist:
func IsComparable(i interface{}) bool { _, ok := i.(Comparable[i]) return ok }
Sie können auch die Less-Funktion verwenden, um zwei vergleichbare Werte zu vergleichen:
func Less(a, b Comparable[T]) bool { return a.Compare(b) < 0 }
Das obige ist der detaillierte Inhalt vonWie implementieren Sie die Vergleichsfunktionalität für benutzerdefinierte Typen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!