Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementieren Sie die Vergleichsfunktionalität für benutzerdefinierte Typen in Go?

Wie implementieren Sie die Vergleichsfunktionalität für benutzerdefinierte Typen in Go?

Susan Sarandon
Susan SarandonOriginal
2024-11-04 05:53:01716Durchsuche

How do you implement comparison functionality for custom types in Go?

Vergleichbare Schnittstelle in Go

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.

Definieren einer vergleichbaren Schnittstelle

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).

Implementierung der Schnittstelle

Damit ein benutzerdefinierter Typ als vergleichbar gilt, Es muss die Comparable-Schnittstelle implementieren:

type MyType struct {
    // ...
}

func (t MyType) Compare(other MyType) int {
    // ...
}

Verwenden einer Comparable-Schnittstelle

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!

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