Heim >Backend-Entwicklung >Golang >Wie schreibe ich eine generische Funktion für numerische Typen in Go?

Wie schreibe ich eine generische Funktion für numerische Typen in Go?

Barbara Streisand
Barbara StreisandOriginal
2024-12-18 00:00:14662Durchsuche

How to Write a Generic Function for Numerical Types in Go?

So erstellen Sie eine generische Funktion für numerische Typen in Go

Als JavaScript- und TypeScript-Benutzer fragen Sie sich vielleicht, wie man mit numerischen Typen in Go umgeht während der Arbeit mit int und float. In diesem Artikel werden die besten Möglichkeiten zum Erstellen einer generischen Funktion untersucht, die jedes numerische Argument akzeptieren kann.

Generische Funktionen in Go 1.18 und höher

Mit der Einführung von Typparametern in Ab Version 1.18 können Sie jetzt Funktionen definieren, die im Typ T parametrisiert sind. Mithilfe der Schnittstellenbeschränkung können Sie T auf numerisch beschränken Typen.

func add[T Number](a, b T) T {
    return a + b
}

Hier wird die Einschränkung Number mithilfe des Pakets golang.org/x/exp/constraints definiert:

type Number interface {
    constraints.Integer | constraints.Float
}

Diese Einschränkung stellt sicher, dass T ein Typ sein muss, der erfüllt entweder Constraints.Integer oder Constraints.Float.

Verwendung von Generic Funktionen

Diese generische Additionsfunktion kann Argumente jedes numerischen Typs verarbeiten. Es ist jedoch wichtig zu beachten, dass beide Argumente vom gleichen Typ sein müssen. Zum Beispiel:

fmt.Println(add(1, 2))     // 3
fmt.Println(add(a, b))     // 3
fmt.Println(add(1.5, 3.2)) // 4.7

Der Versuch, Typen wie add(2.5, 2) zu mischen, führt zu einem Kompilierungsfehler.

Unterstützung komplexer Zahlen

Sie können die Zahlenbeschränkung auf komplexe Typen erweitern:

type Number interface {
    constraints.Integer | constraints.Float | constraints.Complex
}

Obwohl sie von complex unterstützt wird Die arithmetischen Operatoren , -, * und / bleiben die einzigen unterstützten Operatoren. Modul % und bitweise Operatoren werden für komplexe Typen nicht unterstützt.

Das obige ist der detaillierte Inhalt vonWie schreibe ich eine generische Funktion für numerische 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