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 ?