Avatar ·

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!