2009-12-05 72 views
0

是否可以使用操作员代替功能?使用操作员代替功能

例如,在下面的代码中可以用+替代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)) 
} 

如果不可能使用运算符作为函数,那么我希望链接到文档说明这一点。

+3

大多数情况下,一种语言的文档说明它可以*做什么,而不是它*不能*。因此通常情况下,如果语言*无法做某件事情,那么要求链接到文档是没有意义的。 – Amber 2009-12-05 09:33:21

回答

5

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

另请注意,grammar for operators不允许没有对应表达式的操作员使用任何选项。