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.

Foi útil?

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
scroll top