Generische Funktionen für numerische Typen in Go schreiben
Wenn Sie in Go mit verschiedenen numerischen Typen wie int und float64 arbeiten, müssen Sie diese erstellen Typspezifische Funktionen oder Konvertieren von Werten in einen allgemeinen Typ. Ein eleganterer Ansatz besteht darin, generische Funktionen mithilfe von Typparametern und Schnittstellenbeschränkungen zu schreiben.
Verwendung von Typparametern und der Zahlenbeschränkung
In Go 1.18 und höher können Sie definieren eine generische Funktion mit einem Typparameter T und einer Einschränkung T für die Zahlenschnittstelle, definiert wie folgt:
import "golang.org/x/exp/constraints" type Number interface { constraints.Integer | constraints.Float }
Diese Einschränkung umfasst alle vorzeichenbehafteten und vorzeichenlose Integer-Typen sowie Float-Typen. Ihre generische Funktion kann wie folgt geschrieben werden:
func add[T Number](a, b T) T { return a + b }
Generische Funktionen aufrufen
Mit dieser generischen Funktion können Sie jetzt arithmetische Operationen für zwei beliebige Argumente numerischen Typs ausführen . Zum Beispiel:
a := 1 b := 2.5 fmt.Println(add(a, b)) // 3.5
Einschränkungen
Beachten Sie, dass die Argumente der generischen Funktion denselben Typ haben müssen. Darüber hinaus sind die Operationen, die innerhalb der Funktion ausgeführt werden können, auf diejenigen beschränkt, die von allen Typen in der Zahlenbeschränkung unterstützt werden (d. h. , -, * und /).
Umgang mit komplexen Zahlen
Go unterstützt auch komplexe Typen (complex64 und complex128). Wenn Sie sie in Ihre generische Funktion einbeziehen möchten, können Sie die Zahlenbeschränkung um Einschränkungen erweitern. Komplex:
type Number interface { constraints.Integer | constraints.Float | constraints.Complex }
Denken Sie daran, dass arithmetische Operatoren in Go auch von komplexen Typen unterstützt werden, mit Ausnahme von % Operator und bitweise Operatoren, die nur von Ganzzahltypen unterstützt werden.
Das obige ist der detaillierte Inhalt vonWie kann ich generische Funktionen in Go schreiben, um verschiedene numerische Typen zu verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!