2009-12-05 77 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不允許沒有對應表達式的操作員使用任何選項。