Menu
Coddy logo textTech

Définir des méthodes sur les Structs

Fait partie de la section Programmation Orientée Objet du Journey GO de Coddy — leçon 7 sur 107.

Les méthodes en Go sont des fonctions avec un argument receveur spécial qui associe la fonction à un type struct.

Syntaxe de la méthode

func (receiverName StructType) MethodName() ReturnType {
    // corps de la méthode
}

Définir une structure avec des méthodes

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func (r Rectangle) Perimeter() float64 {
    return 2 * (r.Width + r.Height)
}

Méthodes avec paramètres

func (r Rectangle) Scale(factor float64) float64 {
    return r.Area() * factor
}

Appel de méthodes

rect := Rectangle{Width: 5, Height: 3}
fmt.Println(rect.Area())      // Résultat : 15
fmt.Println(rect.Perimeter()) // Résultat : 16
fmt.Println(rect.Scale(2))    // Résultat : 30

Le récepteur (r Rectangle) vous permet d'accéder aux champs de la structure à l'intérieur de la méthode en utilisant la variable réceptrice r. Les méthodes peuvent appeler d'autres méthodes sur la même structure.

challenge icon

Défi

Moyen

Ajoutez trois méthodes à la structure Circle :

  • Area — retourne math.Pi * radius * radius
  • Circumference — retourne 2 * math.Pi * radius
  • Describe — retourne une chaîne de caractères : "Circle with radius X.XX"

Aide-mémoire

Les méthodes en Go sont des fonctions avec un argument receiver (récepteur) spécial qui associe la fonction à un type struct.

Syntaxe des méthodes :

func (receiverName StructType) MethodName() ReturnType {
    // corps de la méthode
}

Exemple avec une structure et des méthodes :

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func (r Rectangle) Perimeter() float64 {
    return 2 * (r.Width + r.Height)
}

Les méthodes peuvent accepter des paramètres :

func (r Rectangle) Scale(factor float64) float64 {
    return r.Area() * factor
}

Appel des méthodes :

rect := Rectangle{Width: 5, Height: 3}
fmt.Println(rect.Area())      // Résultat : 15
fmt.Println(rect.Perimeter()) // Résultat : 16
fmt.Println(rect.Scale(2))    // Résultat : 30

Le récepteur vous permet d'accéder aux champs de la structure à l'intérieur de la méthode. Les méthodes peuvent appeler d'autres méthodes sur la même structure.

Essayez vous-même

package main

import "fmt"

func main() {
    var radius float64
    fmt.Scan(&radius)

    c := Circle{Radius: radius}

    fmt.Printf("Area: %.2f\n", c.Area())
    fmt.Printf("Circumference: %.2f\n", c.Circumference())
    fmt.Printf("Description: %s\n", c.Describe())
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet