Aller au contenu

Tableaux, slices et maps#

Tableaux et initialisation#

  • Un tableau en Go est une collection ordonnée d'éléments de même type, dont la taille est fixée à la déclaration.
  • On déclare un tableau avec la syntaxe : var arrayName [size]Type, où size est un entier constant, et Type est le type d'éléments du tableau.
  • Par exemple, var arr [5]int déclare un tableau de 5 entiers. Par défaut, tous les éléments sont initialisés à zéro.
  • Les éléments d'un tableau peuvent être initialisés lors de la déclaration : arr := [5]int{1, 2, 3, 4, 5}.
  • Pour accéder à un élément d'un tableau, on utilise l'indexation : arr[0] pour le premier élément.

Slices : création, manipulation et capacité#

  • Les slices en Go sont des segments dynamiques d'un tableau.
  • Contrairement aux tableaux, les slices n'ont pas de taille fixe à la déclaration.
  • Pour créer une slice, on peut utiliser la fonction built-in make(): s := make([]int, 5).
  • On peut également créer une slice à partir d'un tableau existant : s := arr[0:3].
  • Les éléments d'une slice peuvent être accédés de la même manière que pour un tableau : s[0].
  • Pour connaître la taille d'une slice, on utilise la fonction len(). Pour la capacité (c'est-à-dire la taille maximum que la slice peut atteindre sans ré-allocation), on utilise cap().
  • Pour ajouter des éléments à une slice, on utilise la fonction append() : s = append(s, 6, 7, 8).
  • Il faut noter que append() peut provoquer une ré-allocation si la capacité de la slice est dépassée.

Maps : création, manipulation et itération#

  • Les maps en Go sont des collections non ordonnées de paires clé-valeur.
  • Pour déclarer une map, on utilise la fonction make(): m := make(map[string]int).
  • On peut ajouter des paires clé-valeur à une map avec la syntaxe suivante : m["one"] = 1.
  • Pour accéder à une valeur, on utilise la clé : value := m["one"].
  • Pour supprimer une clé et sa valeur associée, on utilise la fonction delete() : delete(m, "one").
  • Pour vérifier si une clé est présente dans une map, on peut utiliser la forme à deux valeurs de l'accès aux éléments de la map : value, ok := m["two"]. Si la clé est présente, ok vaut true et value contient la valeur associée à la clé. Sinon, ok vaut false et value contient la valeur zéro du type de la map.
  • Pour itérer sur une map, on peut utiliser la boucle range : for key, value := range m { ... }.