Maison >développement back-end >Golang >Quelle est la différence entre la longueur et la capacité des Go Slices ?

Quelle est la différence entre la longueur et la capacité des Go Slices ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-15 14:27:15613parcourir

What's the Difference Between Length and Capacity in Go Slices?

Comprendre la capacité et la longueur des tranches Go

Dans le monde de Go, les tranches sont une structure de données fondamentale. Cependant, leur contenance et leur longueur peuvent parfois être déroutantes pour les débutants. Examinons les concepts à l'aide d'un exemple pratique.

func main() {
  a := make([]int, 5)
  // [0,0,0,0,0] len=5 cap=5

  b := make([]int, 0, 5)
  // [] len=0 cap=5

  c := b[:2]
  // [0,0] len=2 cap=5

  d := c[2:5]
  // [0,0,0] len=3 cap=3
}

Comprendre l'initialisation des tranches

a et b sont initialisés à l'aide de make, mais avec des paramètres différents. a initialise un tableau d'entiers d'une longueur de 5 et d'une capacité de 5, tandis que b initialise un tableau vide d'une capacité de 5.

Valeurs nulles et initialisation du tableau

Le concept de Go de variables non initialisées est important ici. Lorsque vous créez une variable sans définir explicitement sa valeur, elle sera initialisée avec sa valeur zéro. Pour un tableau d'entiers, cela signifie un tableau contenant tous des zéros.

Découpage et valeurs nulles

Lorsque vous tranchez b avec [:2], vous créez une nouvelle tranche c. Cette tranche pointe vers le même tableau de support que b, mais uniquement les deux premiers éléments. Puisque le tableau de sauvegarde a été initialisé avec des zéros, c contiendra les éléments [0,0].

Découpage et capacité

Enfin, lorsque vous tranchez c avec [2 :5], vous créez une nouvelle tranche d. Cette tranche partage le même tableau de support que c, mais avec des indices différents. La capacité de d est de 5-2 = 3, car elle représente les éléments restants dans le tableau de support après le découpage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn