Golang:结构上的算术运算符

时间:2016-09-20 09:52:22

标签: math go structure

有没有办法在结构之间定义artihmetic ooerator? 我使用十进制包来处理固定的小数位,并避免浮点数四舍五入。 Ir定义了操作cAlling函数,如mul,add,sub等。 我想像使用浮点数那样使用那个结构:6/2,而不是decimal.newfromfloat(6).div(newfromfloat(2)) 我希望找到一些可以实现的界面,这些界面让我做了那种操作,或者可能是某种getter setter与底层的valúes一起工作......有什么想法吗?

1 个答案:

答案 0 :(得分:1)

不,你不能在Go中重载运营商。有关于它的FAQ条目:

  

为什么Go不支持重载方法和运算符?

     

如果方法调度也不需要进行类型匹配,则会简化方法调度。使用其他语言的经验告诉我们,使用具有相同名称但签名不同的各种方法偶尔会有用,但在实践中它也可能令人困惑和脆弱。仅按名称匹配并要求在类型中保持一致性是Go类型系统中的一个主要简化决策。

     

关于运算符重载,它似乎比绝对要求更方便。如果没有它,事情就更简单了。

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

如果您需要一个可行的解决方案,请查看package math/big如何处理算术sans运算符重载。