Les tableaux en Go

Introduction aux tableaux

Les tableaux sont des séquences d'éléments de type de données identique, avec une taille fixée dès leur création. Contrairement aux slices qui peuvent changer de taille, la dimension d'un tableau ne peut pas être modifiée une fois qu'il a été créé.

Tableaux vs. Slices

La distinction principale entre tableaux et slices repose sur la gestion de la mémoire. Un tableau est transmis à une fonction comme une copie, alors qu'un slice est partagé par référence. Cela signifie que les modifications apportées à un tableau à l'intérieur d'une fonction n'affecteront pas l'original, tandis que les changements à un slice se répercuteront sur le tableau sous-jacent.

Création de tableaux

Voici deux méthodes pour définir un tableau en Go :

  1. Avec le mot-clé var
var arr1 [n]type
  1. Avec l'affectation courte := et des accolades
arr2 := [n]type{el1, el2, ..., eln}

Dans ces exemples, 'n' représente la taille du tableau et 'type' désigne le type de données souhaité. Notez que l'utilisation de la syntaxe := nécessite toujours des accolades.

Exemples de tableaux

Dans cet exemple, deux tableaux zeroes1 et zeroes2 sont initialisés sans valeurs spécifiques. Les valeurs numériques par défaut pour les tableaux en Go sont 0 :

var zeroes1 [5]int
zeroes2 := [3]float64{}
fmt.Println(zeroes1) // Sortie : [0 0 0 0 0]
fmt.Println(zeroes2) // Sortie : [0 0 0]

Puis, on peut également définir des valeurs d’éléments directement :

array := [3]string{"Bonjour", "Monde", "!"}
fmt.Println(array) // Sortie : [Bonjour Monde !]

Accéder aux éléments d'un tableau

Pour accéder à un élément d'un tableau, on utilise le nom du tableau suivi de l'index entre crochets :

var array [3]int
array[0] = 1
array[1] = 2
array[2] = 3
fmt.Println(array[0], array[1], array[2]) // Sortie : 1 2 3

Tableaux multidimensionnels

Les tableaux à plusieurs dimensions peuvent être déclarés comme suit :

var array [x1][x2]...[xn]type

Ou en utilisant :

array := [x1][x2]...[xn]type

Ici, x1, x2, ..., xn représentent les capacités de chaque dimension. L'exemple suivant crée un tableau multidimensionnel et accède à ses éléments :

array := [2][2]int{{1, 2}, {3, 4}}
fmt.Println(array[0][1]) // Affiche : 2