Utilizzando un operatore in luogo di una funzione
-
13-09-2019 - |
Domanda
E 'possibile utilizzare un operatore in luogo di una funzione in go?
Ad esempio, nel seguente codice è possibile sostituire con 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))
}
Se non è possibile utilizzare gli operatori come funzioni, quindi gradirei un link alla documentazione di chiarire questo.
Soluzione
Gli operatori sono valori non di prima classe in Go (né maggior parte delle altre lingue), quindi no, non è possibile passarli come argomenti. Si noti che anche il Vai documentazione utilizza un func(x,y int) int { return x+y }
nei suoi esempi.
Si noti inoltre che il grammatica per gli operatori non consente alcuna possibilità di un operatore, senza un'espressione corrispondente di operare.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow