【发布时间】:2014-05-02 20:31:24
【问题描述】:
这可能不是一个好问题,因为我不知道有任何编译语言支持此功能,但由于 Go 总是让我感到惊讶,我还是会问它:
为了我自己的练习,我正在用 Go 编写一个小计算器程序。我想知道是否有一种方法可以声明和分配“运算符”类型的变量,例如,我可以这样写:
var o Operator
o = +
var o1 Operator
o1 = /
这样写函数
func DoOperation(a,b int,o Operator) int{
return a o b
}
(不,我不是在问运算符重载。)
顺便说一句,我不知道有任何编译语言支持这样的事情(我不是这方面的专家)。我确实查看了操作符下的文档,但一无所获。 Go 能再给我一个惊喜吗?
编辑:接受的答案表明 Haskell 支持这一点,
【问题讨论】:
-
有什么特别的原因被否决了吗?由于 Haskell 支持这一点,根据 @tomwilde 的回答,这不是一个愚蠢的问题,我确实查看了操作符下的文档,但一无所获,但 Go 似乎在“复活节彩蛋”中占有一席之地
-
Io 可以做这样的事情。
-
@dethtron5000 - 有趣。以前从未听说过
Io,只是查了一下——我猜这不是主流语言...... :) 我看到它在虚拟机中运行。它会编译成类似于 Java 字节码或 MSIL 的东西吗?
标签: variables go operators variable-assignment