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()
Rectanglen'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
perimetren'est pas placée à l'intérieur dustruct. - 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 fonctionperimetre.
nsi/langages/go/structures.txt · Dernière modification : de goupillwiki
