Pergunta
É possível usar um operador no lugar de uma função em vez?
Por exemplo, no código a seguir é possível substituir add
com +
?
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))
}
Se não for possível usar operadores como funções, então eu gostaria de receber um link para a documentação esclarecer isso.
Solução
Os operadores não são valores de primeira classe em Go (nem a maioria das outras línguas), de modo nenhum, você não pode passá-los como argumentos. Observe que mesmo o Go documentação usa um func(x,y int) int { return x+y }
em seus exemplos.
Além disso, note que a gramática para operadores não permite qualquer opções para um operador sem uma expressão correspondente a operar.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow