Avatar ·

¿Qué significan los paréntesis antes del nombre de la función en Go?

¡Hola a todos! Empecé a estudiar Go recientemente y me confunde mucho la sintaxis de declaración de funciones. Estoy acostumbrado a Python, donde todo es simple: `def func_name(args):`. Pero en Go veo construcciones extrañas. Por ejemplo, me topé con este código: ```go type Rectangle struct { Width float64 Height float64 } func (r Rectangle) Area() float64 { return r.Width * r.Height } ``` ¿Qué es ese `(r Rectangle)` antes del nombre de la función `Area`? Pensaba que los parámetros se escriben entre paréntesis después del nombre de la función, como en otros lenguajes. Pero aquí están antes del nombre. ¿Es una sintaxis especial? Intenté escribir simplemente `func Area(r Rectangle) float64` — funciona, pero entonces no puedo llamar al método como `rect.Area()`, solo como `Area(rect)`. ¿Cuál es la diferencia? ¿Cuándo se usan los paréntesis antes del nombre y cuándo después? ¿Y qué es el "receiver"? He escuchado ese término, pero no entiendo para qué sirve. Explíquenlo, por favor, para un principiante. ¡Gracias de antemano!