Avatar ·

Syntaxe étrange de Go : que signifient les parenthèses avant le nom de la fonction ?

Bonjour à tous ! Je viens de commencer à apprendre Go après Python et JavaScript, et une particularité syntaxique me trouble. Dans le code, je vois souvent quelque chose comme ceci : ```go type Rectangle struct { Width float64 Height float64 } func (r Rectangle) Area() float64 { return r.Width * r.Height } ``` Pourquoi y a-t-il des parenthèses avec `(r Rectangle)` avant le nom de la fonction `Area` ? En Python, j'écrirais simplement `def area(self):`. Je comprends que cela a un rapport avec les méthodes des structures, mais je n'arrive pas à saisir la logique. Voici un autre exemple qui m'a embrouillé : ```go func (p *Person) SetName(name string) { p.Name = name } ``` Pourquoi écrit-on parfois `(p *Person)` et parfois `(p Person)` ? Et que se passerait-il si je supprimais complètement ces parenthèses ? Par exemple : ```go func Area() float64 { return 0 } ``` Cela fonctionne aussi. Quand faut-il utiliser cette syntaxe et quand non ? Expliquez-moi, s'il vous plaît, comme à un débutant. J'ai l'impression d'avoir raté un concept fondamental de Go. Merci d'avance pour votre aide.