Heim > Backend-Entwicklung > Golang > Wie kann ich rekursive Typbeschränkungen in Go2-Generika mithilfe von Schnittstellen definieren?

Wie kann ich rekursive Typbeschränkungen in Go2-Generika mithilfe von Schnittstellen definieren?

Patricia Arquette
Freigeben: 2024-12-14 13:04:12
Original
366 Leute haben es durchsucht

How Can I Define Recursive Type Constraints in Go2 Generics Using Interfaces?

Definieren einer rekursiven Typbeschränkung mithilfe einer vordefinierten Schnittstelle

In Go2-Generika können Schnittstellen verwendet werden, um Typeinschränkungen für generische Typen anzugeben. Der aktuelle Entwurf bietet jedoch keine Möglichkeit, die Implementierung einer Methode mit einem Argument des generischen Typs selbst zu erzwingen.

Um diese Einschränkung zu überwinden, ziehen Sie den folgenden Ansatz in Betracht:

Definieren Sie eine rekursive Schnittstelle:

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

Definieren Sie eine Funktion mit einem generischen Typparameter, der durch die Rekursivität eingeschränkt wird Schnittstelle:

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

Verwendung:

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

Erklärung:

Die Typbeschränkung T Lesser [T] stellt sicher, dass der generische Typ T die Less-Methode mit einem Argument vom Typ T implementieren muss. Dies ermöglicht einen rekursiven Typ Einschränkungen.

Mit diesem Ansatz können Sie benutzerdefinierte Typen wie Apple und Orange definieren, die ihre eigenen Less-Methoden implementieren, die rekursive Einschränkung erfüllen und die Verwendung der IsLess-Funktion mit diesen benutzerdefinierten Typen ermöglichen.

Das obige ist der detaillierte Inhalt vonWie kann ich rekursive Typbeschränkungen in Go2-Generika mithilfe von Schnittstellen definieren?. 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