Heim > Backend-Entwicklung > Golang > Wie können rekursive Typbeschränkungen in Go Generics mithilfe von Schnittstellen erreicht werden?

Wie können rekursive Typbeschränkungen in Go Generics mithilfe von Schnittstellen erreicht werden?

Linda Hamilton
Freigeben: 2024-12-26 15:22:10
Original
119 Leute haben es durchsucht

How Can Recursive Type Constraints Be Achieved in Go Generics Using Interfaces?

Rekursive Typeinschränkungen mit vordefinierten Typen

In Go-Generika ist die Angabe einer Typeinschränkung für einen generischen Typ mithilfe einer Schnittstelle möglich. Es kann jedoch schwierig sein, die Implementierung einer Methode mit einem Argument des generischen Typs zu erzwingen.

Um rekursive Typeinschränkungen in Go-Generika zu erreichen, können wir eine Schnittstelle mit einer Methode definieren, die den generischen Typ annimmt ein Argument:

type Lesser[T any] interface {
    Less(T) bool
}
Nach dem Login kopieren

Wir können dann eine Funktion erstellen, die zwei Argumente vom Typ Lesser[T] akzeptiert und a zurückgibt boolean:

func IsLess[T Lesser[T]](x, y T) bool {
    return x.Less(y)
}
Nach dem Login kopieren

Jetzt können benutzerdefinierte Typen, die die Lesser[T]-Schnittstelle implementieren, in der Funktion verwendet werden:

type Apple int

func (a Apple) Less(other Apple) bool {
    return a < other
}

type Orange int

func (o Orange) Less(other Orange) bool {
    return o < other
}

func main() {
    fmt.Println(IsLess(Apple(10), Apple(20)))   // true
    fmt.Println(IsLess(Orange(30), Orange(15))) // false
}
Nach dem Login kopieren

Die Lesser[T]-Einschränkung stellt sicher, dass die bereitgestellten Typen Zur IsLess-Funktion implementieren Sie eine Less-Methode, die ein Argument desselben Typs akzeptiert. Dies ermöglicht rekursive Typbeschränkungen ohne die Verwendung von Typliteralen.

Das obige ist der detaillierte Inhalt vonWie können rekursive Typbeschränkungen in Go Generics mithilfe von Schnittstellen erreicht werden?. 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