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 に答える