使用运算符代替函数

时间:2009-12-05 09:17:29

标签: go

是否可以在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))
}

如果无法将运算符用作函数,那么我将非常感谢文档的链接,以澄清这一点。

1 个答案:

答案 0 :(得分:6)

运算符不是Go中的一等值(也不是大多数其他语言),所以不,你不能将它们作为参数传递。请注意,即使Go documentation在其示例中使用了func(x,y int) int { return x+y }

另请注意,grammar for operators不允许没有相应表达式的运算符的任何选项。