【问题标题】:Golang: arithmetic operators on structsGolang:结构上的算术运算符
【发布时间】:2016-09-20 09:52:22
【问题描述】:

有没有办法在结构之间定义人工操作器? 我使用十进制包来处理固定的小数位并避免浮点数舍入错误。 Ir 定义操作调用函数,如 mul、add、sub 等。 我想像使用浮点数一样使用该结构:6 / 2,而不是 decimal.newfromfloat(6).div(newfromfloat(2)) 我希望找到一些接口来实现,让我大声地做那种操作,或者可能是某种 getter setter 来处理底层的值......有什么想法吗?

【问题讨论】:

  • 不,没有,也不会有。

标签: math go structure


【解决方案1】:

不,您不能在 Go 中重载运算符。有一个关于它的常见问题解答条目:

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

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

关于运算符重载,这似乎是一种方便而不是绝对要求。同样,没有它,事情会变得更简单。

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

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

【讨论】:

  • 太可惜了...我喜欢 .NET 中的 Decimal 类型
猜你喜欢
  • 2017-12-28
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2019-03-17
  • 2018-10-16
  • 1970-01-01
  • 2013-06-27
  • 2012-10-10
相关资源
最近更新 更多