是否可以在go中使用运算符代替函数?
例如,在以下代码中,是否可以将add
替换为+
?
package main
import "fmt"
var cur, prev int = 1, 1
func fib(f func(int, int) int) int {
return f(cur, prev)
}
func main() {
add := func(x int, y int) int { return x + y };
fmt.Println(fib(add))
}
如果无法将运算符用作函数,那么我将非常感谢文档的链接,以澄清这一点。
答案 0 :(得分:6)
运算符不是Go中的一等值(也不是大多数其他语言),所以不,你不能将它们作为参数传递。请注意,即使Go documentation在其示例中使用了func(x,y int) int { return x+y }
。
另请注意,grammar for operators不允许没有相应表达式的运算符的任何选项。