使用运算符代替函数

Swi*_*iss 1 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))
}
Run Code Online (Sandbox Code Playgroud)

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

Amb*_*ber 6

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

另请注意,运算符语法不允许运算符没有相应表达式的任何选项.