É possível passar funções como parâmetros em Go?
Olá a todos! Comecei a estudar Go recentemente e surgiu uma dúvida. Estou acostumado com linguagens onde funções podem ser passadas como argumentos para outras funções (por exemplo, em JavaScript ou Python). Mas em Go, não tenho certeza se isso é possível.
Tentei escrever uma calculadora simples que aceitasse uma operação (adição, subtração) como parâmetro, mas não consegui. Aqui está o que tentei:
```go
package main
import "fmt"
func add(a, b int) int {
return a + b
}
func subtract(a, b int) int {
return a - b
}
func calculate(a, b int, op func(int, int) int) int {
return op(a, b)
}
func main() {
result := calculate(10, 5, add)
fmt.Println(result)
}
```
O código compila e funciona, mas não tenho certeza se esta é a sintaxe correta. Por que é necessário escrever `func(int, int) int`? Isso é algum tipo de magia? E é possível passar funções com assinaturas diferentes? Por exemplo, uma função que aceita três argumentos?
Por favor, me expliquem como isso funciona em Go e se há