Heim > Backend-Entwicklung > Golang > 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
Freigeben: 2024-11-04 05:53:01
Original
817 Leute haben es durchsucht

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
}
Nach dem Login kopieren

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 {
    // ...
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage