2016-09-20 69 views
0

有沒有辦法在結構之間定義artihmetic ooerators? 即時通訊使用十進制包來處理固定的小數位,並避免浮動四捨五入錯誤。 Ir定義了操作cAlling函數,如mul,add,sub等。 我喜歡用像浮點數那樣的結構:6/2,而不是decimal.newfromfloat(6).div(newfromfloat(2)) 我很希望找到一些界面來實現這個界面,讓我大聲地做這種操作,或者是某種類型的getter setter與底層valúes一起工作......任何想法?Golang:結構上的算術運算符

+1

不,沒有,也不會有任何。 – Volker

回答

1

不,您不能在Go中重載運算符。有關於它的FAQ條目:

爲什麼Go不支持重載方法和運算符?

如果不需要進行類型匹配,則方法調度也會簡化。使用其他語言的經驗告訴我們,使用同一名稱但簽名不同的多種方法偶爾有用,但在實踐中也可能會令人困惑和脆弱。 Go只有通過名稱匹配並要求類型一致纔是Go類型系統的一個重要簡化決策。

關於運算符重載,它似乎比絕對要求更方便。再說一遍,沒有它就更簡單了。

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

如果你需要一個有效的解決方案,看看算術SANS操作符重載如何包math/big交易。

+0

這是一個恥辱......我喜歡.NET中的Decimal類型 – Marcos