Types de données en Go
Ci-dessous sont listés tous les types intégrés du langage Go, pour référence. Pour plus de détails, consultez le Manuel de référence - Types.
Type booléen
Le type booléen n'a que des valeurs vraies et fausses.
| Type | Description |
|---|---|
bool | true pour vrai, false pour faux |
TIP
En Go, l'entier 0 ne représente pas la valeur fausse, et les entiers non nuls ne peuvent pas représenter la valeur vraie. Autrement dit, les nombres ne peuvent pas remplacer les valeurs booléennes pour les jugements logiques, ce sont des types complètement différents.
Types entiers
Go attribue différents types aux entiers de différents nombres de bits, principalement divisés en entiers non signés et entiers signés.
| Numéro | Type et description |
|---|---|
uint8 | Entier non signé 8 bits |
uint16 | Entier non signé 16 bits |
uint32 | Entier non signé 32 bits |
uint64 | Entier non signé 64 bits |
int8 | Entier signé 8 bits |
int16 | Entier signé 16 bits |
int32 | Entier signé 32 bits |
int64 | Entier signé 64 bits |
uint | Entier non signé, au moins 32 bits |
int | Entier, au moins 32 bits |
uintptr | Équivalent à un entier non signé 64 bits, mais dédié aux opérations de pointeurs, utilisé pour stocker des adresses de pointeurs brutes. |
Types flottants
Nombres flottants IEEE-754, principalement divisés en flottants simple précision et double précision.
| Type | Description |
|---|---|
float32 | Flottant IEEE-754 32 bits |
float64 | Flottant IEEE-754 64 bits |
Types complexes
| Type | Description |
|---|---|
complex128 | 64 bits réel et imaginaire |
complex64 | 32 bits réel et imaginaire |
Types de caractères
Les chaînes en Go sont entièrement compatibles avec UTF-8.
| Type | Description |
|---|---|
byte | Équivalent à uint8, peut exprimer les caractères ASCII |
rune | Équivalent à int32, peut exprimer les caractères Unicode |
string | Une chaîne est une séquence d'octets, peut être convertie en type []byte, c'est-à-dire une tranche d'octets |
Types dérivés
| Type | Exemple |
|---|---|
| Tableau | [5]int, tableau d'entiers de longueur 5 |
| Tranche | []float64, tranche de flottants 64 bits |
| Map | map[string]int, map avec clés de type string et valeurs de type int |
| Structure | type Gopher struct{}, structure Gopher |
| Pointeur | *int, un pointeur vers un entier |
| Fonction | type f func(), un type de fonction sans paramètres ni valeur de retour |
| Interface | type Gopher interface{}, interface Gopher |
| Canal | chan int, canal d'entiers |
Valeur zéro
Dans la documentation officielle, la valeur zéro est appelée zero value. La valeur zéro n'est pas seulement littéralement le chiffre zéro, mais plutôt une valeur vide ou une valeur par défaut d'un type.
| Type | Valeur zéro |
|---|---|
| Types numériques | 0 |
| Type booléen | false |
| Type chaîne | "" |
| Tableau | Ensemble de valeurs zéro du type correspondant de longueur fixe |
| Structure | Structure dont tous les champs sont des valeurs zéro |
| Tranche, map, fonction, interface, canal, pointeur | nil |
nil
nil est similaire à none ou null dans d'autres langages, mais n'est pas équivalent. nil est seulement la valeur zéro de certains types de référence et n'appartient à aucun type. On peut voir dans le code source que nil n'est qu'une variable.
var nil TypeDe plus, une instruction comme nil == nil ne passera pas la compilation.
