Generische Funktionen für numerische Daten in Go
Beim Erstellen eines Taschenrechners in Go kann der Umgang mit der Differenz zwischen Ganzzahlen und Gleitkommazahlen eine Herausforderung sein. Es gibt mehrere Möglichkeiten, dieses Problem anzugehen, darunter:
Alles in Gleitkommazahlen umwandeln
Dieser Ansatz beinhaltet die Konvertierung aller Eingaben in Gleitkommazahlen, da Gleitkommazahlen einen größeren Bereich als ganze Zahlen haben. Dies kann jedoch bei großen Ganzzahlen zu Präzisionsproblemen führen.
Separate Funktionen für jeden Typ erstellen
Alternativ können Sie für jeden Typ separate Funktionen erstellen, z. B. addInt und addFloat. Obwohl dies ein eindeutiger Ansatz ist, kann er zu Codeduplizierung und Boilerplate führen.
Verwendung von Generika (Go 1.18 und höher)
Mit der Einführung von Generika in Go 1.18 steht eine elegantere Lösung zur Verfügung. Sie können eine generische Funktion mit einem Typparameter definieren, der auf numerische Typen beschränkt ist:
func add[T Number](a, b T) T { return a + b }
Die Zahlenbeschränkung kann mit dem Paket golang.org/x/exp/constraints definiert werden:
import ( "golang.org/x/exp/constraints" ) type Number interface { constraints.Integer | constraints.Float }
Mit dieser generischen Funktion können Sie Additionen mit beliebigen numerischen Typen (Ganzzahlen, Gleitkommazahlen und sogar komplex) durchführen Zahlen):
fmt.Println(add(1, 2)) // 3 (int + int) fmt.Println(add(1.5, 3.2)) // 4.7 (float64 + float64)
Einschränkungen
Während generische Funktionen Flexibilität bieten, beachten Sie die folgenden Einschränkungen:
Durch die Nutzung von Generika können Sie prägnanten und wiederverwendbaren Code schreiben verarbeitet numerische Daten nahtlos in Ihren Go-Programmen.
Das obige ist der detaillierte Inhalt vonWie kann Go Generics numerische Berechnungen vereinfachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!