Heim >Backend-Entwicklung >Golang >Wie kann ich generische Funktionen in Go schreiben, um verschiedene numerische Typen zu verarbeiten?

Wie kann ich generische Funktionen in Go schreiben, um verschiedene numerische Typen zu verarbeiten?

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 07:54:14821Durchsuche

How Can I Write Generic Functions in Go to Handle Different Numerical Types?

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!

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