O que significam os parênteses antes do nome da função em Go?
Olá a todos! Comecei a estudar Go recentemente e fico muito confuso com a sintaxe de declaração de funções. Estou acostumado com Python, onde é simples: `def func_name(args):`. Mas em Go vejo construções estranhas.
Por exemplo, me deparei com este código:
```go
type Rectangle struct {
Width float64
Height float64
}
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
```
O que é esse `(r Rectangle)` antes do nome da função `Area`? Eu pensava que os parâmetros eram escritos entre parênteses após o nome da função, como em outras linguagens. Mas aqui eles estão antes do nome. Isso é alguma sintaxe especial?
Tentei escrever simplesmente `func Area(r Rectangle) float64` — funciona, mas então não consigo chamar o método como `rect.Area()`, apenas `Area(rect)`. Qual é a diferença? Quando devo usar parênteses antes do nome e quando depois? E o que é "receiver" (receptor), ouvi esse termo, mas não entendo para que serve.
Expliquem, por favor, para um iniciante. Desde já, obrigado!