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
.
Commentaires1
Excellent article, facile à…
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 ?