2016-09-20 6 views
0

Gibt es eine Möglichkeit, arithmetische Ooeratoren zwischen Strukturen zu definieren? Ich benutze ein Dezimal-Paket, um mit festen Dezimalstellen zu arbeiten und floats Rundung erre ta zu vermeiden. Ir definiert Operationen cAlling Funktionen wie mul, add, sub, etc. ID gerne diese Struktur wie ich mit Floats: 6/2, nicht decimal.newfromfloat (6). Div (newfromfloat (2)) Ich hatte gehofft um etwas Interface zu finden, das mich dazu bringt, solche Operationen auszuführen, oder vielleicht eine Art Getter Setter, um mit den zugrunde liegenden Values ​​zu arbeiten ... Irgendwelche Ideen?Golang: arithmetische Operatoren auf Strukturen

+1

Nein, es gibt keine und es wird keine geben. – Volker

Antwort

1

Nein, Sie können Operatoren in Go nicht überlasten. Es gibt einen FAQ-Eintrag über sie:

Warum unterstützen geht nicht von Methoden und Operatoren Überlastung?

Der Methodenversand ist vereinfacht, wenn auch die Typübereinstimmung nicht erforderlich ist. Erfahrungen mit anderen Sprachen haben uns gezeigt, dass es manchmal nützlich ist, eine Vielzahl von Methoden mit dem gleichen Namen, aber unterschiedlichen Unterschriften zu verwenden, die aber in der Praxis auch verwirrend und fragil sein können. Die Übereinstimmung nur nach Namen und Konsistenz in den Typen war eine wichtige Vereinfachung in Go's Typsystem.

In Bezug auf die Überlastung des Bedieners scheint es eher eine Annehmlichkeit als eine absolute Anforderung zu sein. Auch hier sind die Dinge einfacher.

https://golang.org/doc/faq#overloading

Wenn Sie eine funktionierende Lösung benötigen, schauen, wie Paket math/big beschäftigt sich mit Arithmetik sans Betreiber Überlastung.

+0

Das ist eine Schande ... Ich liebte den Dezimal-Typ in .NET – Marcos

Verwandte Themen