Outils pour utilisateurs

Outils du site


nsi:langages:go:structures

Structure

Une structure est une collection de types par exemple

type personne struct {
    nom string
    age int
}

une variable de type personne contiendra un attribut nom et un attribut age

// création d'une personne
p := personne{nom:"Robert", age:70}

// lecture d'un attribut
a := p.age

// modification
p.age = 47

Méthode

Comme on définit une fonction dans une classe, on va définir une fonction liée à une structure.

Prenons l'exemple Python d'une classe Rectangle avec sa méthode perimetre

code python

class Rectangle:
    def __init__(self, largeur, longueur):
        self.largeur = largeur
        self.longueur = longueur

    def perimetre(self):
        return 2*(self.longueur + self.largeur)
    
# exemple d'utilisation
r = Rectangle(45, 170)
perim = r.perimetre()

Notez que la méthode perimetre a besoin de pouvoir atteindre l'objet Rectangle sur lequel elle s'applique et que cela se fait, dans la définition en précisant self comme argument de la fonction, et à l'exécution en écrivant r. devant l'appel perimetre().

Voici comme cela se transforme en Go

code go

type Rectangle struct {
    largeur int
    longueur int
}

func (self rect) perimetre() int {
    return 2*(self.longueur +self.largeur)
}

// exemple d'utilisation
r := Rectangle{largeur:45, longueur:170}
perim := r.perimetre()
  • Rectangle n'est pas une classe et n'a pas de constructeur comme le __init__ Python. Tout ce que l'on peut faire, c'est créer la structure en précisant les attributs.
  • La définition de la méthode perimetre n'est pas placée à l'intérieur du struct.
  • Remarquez enfin comment le self (qui n'est pas un mot-clé réservé, on pourrait écrire un autre nom à la place de « self ») est placé dans la définition de la fonction perimetre.
nsi/langages/go/structures.txt · Dernière modification : de goupillwiki