Использование оператора вместо функции - PullRequest
1 голос
/ 05 декабря 2009

Можно ли использовать оператор вместо функции в 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 Ответ

6 голосов
/ 05 декабря 2009

Операторы не являются первоклассными значениями в Go (как и в большинстве других языков), поэтому нет, вы не можете передавать их в качестве аргументов. Обратите внимание, что даже Go документация использует func(x,y int) int { return x+y } в своих примерах.

Также обратите внимание, что грамматика для операторов не разрешает операторам работать с опциями без соответствующего выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...