1

是否可以使用运算符代替 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))
}

如果无法将运算符用作函数,那么我将不胜感激一个指向澄清这一点的文档的链接。

4

1 回答 1

6

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

另请注意,运算符的语法不允许对没有相应表达式的运算符的任何选项进行操作。

于 2009-12-05T09:26:27.243 回答