Les types en Go

Par fdifolco, 21 mars, 2025
Learning Go

1. Aliases de Types

Golang permet de définir des alias de types pour améliorer la lisibilité du code. Par exemple :

 type Age int
 type Nom string
 type Ajouter func(int, int) int

Ici, Age et Nom sont des alias pour int et string, tandis que Ajouter est un alias pour une fonction qui prend deux int et retourne un int. Cette fonctionnalité n'existe pas directement en Python mais rappelle les typedef en C.

2. Structs et Composition

Contrairement à des langages comme Java qui utilisent des classes, Go emploie des structs pour définir des objets :

type Employer struct {
    Nom Nom
    Age Age
}

type Manager struct {
    Employer
    Role string
}

La struct Manager inclut directement Employer, ce qui signifie qu’il est composé de ses champs et de ses méthodes. La philosophie de Go est de favoriser la composition plutôt que l’héritage. En fait, l’héritage n’existe pas en Go.

3. Interfaces et Polymorphisme

En Go, les interfaces permettent d'appliquer le polymorphisme sans héritage direct. Voici un exemple :

type Personne interface {
    Parler()
}

func (u Employer) Parler() {
    fmt.Println("Bonjour, mon nom est", u.Nom)
}

Toute struct qui implémente Parler() satisfait l'interface Personne, sans besoin de déclaration explicite comme en Java par exemple avec implements.

4. Gestion des Enum avec iota

En Go, les énumérations sont gérées via la constante iota, qui incrémente automatiquement les valeurs :

type Color int
const (
    Red Color = iota
    Green
    Blue
)
fmt.Println(Color(Green)) // 1
fmt.Println(Color(8)) // 8
fmt.Println(Blue) // 2

Oui oui, c’est terrible comme remplacement des Enum. Les éléments de cette fausse Enum sont en fait seulement des constantes déguisées en type int nommé Color. Remarquez qu’il n’y a pas de façon d’utiliser Color de façon stricte avec les éléments de l’énum seulement. Nous sommes donc obligés d’utiliser les constantes directement. iota dans ce cas initialise la constante Red à 0 et incrémente de 1 pour chaque constante définie dans le bloc const.

Étiquettes

Commentaires1

hekram

il y a 2 semaines 3 jours

Excellent article, facile à comprendre les types de Go et comment il se distingue des autres langages. L’explication sur les alias de types, les structs et la composition permet de bien saisir la philosophie de Go, qui privilégie la simplicité et la flexibilité plutôt que l’héritage classique.

Juste une petite question : dans quel type de projet choisirais-tu Go plutôt qu’un autre langage orienté objet comme Java, Python ou PHP ?