Heim > Backend-Entwicklung > Golang > Wie kann ich generische numerische Funktionen in Go schreiben?

Wie kann ich generische numerische Funktionen in Go schreiben?

Patricia Arquette
Freigeben: 2025-01-04 04:25:39
Original
365 Leute haben es durchsucht

How Can I Write Generic Numerical Functions in Go?

Generische numerische Funktionen in Go schreiben

Wenn man in Go mit verschiedenen numerischen Typen arbeitet, kann es sein, dass man Funktionen benötigt, die damit umgehen können beliebige numerische Daten. Hier untersuchen wir, wie dieser Anwendungsfall in Go 1.18 und höher angegangen werden kann, sowie mögliche Lösungen für frühere Versionen.

Go 1.18 und höher:
Mit der Einführung von Typ Parameter in Go 1.18 ist das Definieren einer generischen Funktion unkompliziert.

func add[T Number](a, b T) T {
  return a + b;
}
Nach dem Login kopieren

Hier stellt T den Typparameter dar, der durch die eingeschränkt wird Nummernschnittstelle. Diese mit dem Paket golang.org/x/exp/constraints definierte Schnittstelle stellt sicher, dass T ein numerischer Typ ist. Dieser Ansatz ermöglicht die Verwendung von zwei beliebigen numerischen Typen (Ganzzahl oder Gleitkomma) als Argumente, und die Funktion gibt das Ergebnis mit demselben Typ zurück.

Frühere Versionen von Go:

In früheren Go-Versionen gibt es einige Methoden, um mit dieser Situation umzugehen:

  • Konvertieren in Float: Eine Möglichkeit besteht darin, alle Eingaben in float64 zu konvertieren, da es den Bereich sowohl von Ganzzahlen als auch von Floats abdeckt. Dies führt jedoch zu unnötigen Typkonvertierungen und kann zu einem Genauigkeitsverlust bei ganzzahligen Daten führen.
  • Typspezifische Funktionen erstellen: Sie können für jeden spezifischen numerischen Typ separate Funktionen erstellen, z. B. addInt (a, b int) int für Ganzzahlen und addFloat(a, b float64) float64 für Gleitkommazahlen. Dieser Ansatz bietet Typsicherheit, erfordert aber die Aufrechterhaltung mehrerer Funktionen.

Schlussfolgerung:

Die bevorzugte Lösung hängt von der verwendeten Go-Version ab. Für Go 1.18 und höher ist der generische Funktionsansatz mit Typparametern und der Zahlenbeschränkung am prägnantesten und effizientesten. Bei früheren Versionen müssen Sie zwischen der Konvertierung in Float oder der Verwaltung typspezifischer Funktionen wählen.

Das obige ist der detaillierte Inhalt vonWie kann ich generische numerische Funktionen in Go schreiben?. 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