Maison > développement back-end > Golang > Pourquoi les tranches Go peuvent-elles être tranchées jusqu'à leur longueur, pas seulement leur capacité ?

Pourquoi les tranches Go peuvent-elles être tranchées jusqu'à leur longueur, pas seulement leur capacité ?

Barbara Streisand
Libérer: 2025-01-04 19:37:40
original
329 Les gens l'ont consulté

Why Can Go Slices Be Sliced Up To Their Length, Not Just Their Capacity?

Pourquoi les tranches peuvent-elles être découpées jusqu'à la longueur du tableau sous-jacent dans Go ?

Les tableaux et les tranches Go offrent des moyens pratiques de travailler avec collectes de données. Un comportement particulier qui peut paraître surprenant est la possibilité de trancher une tranche jusqu'à sa longueur plutôt que sa capacité. Pour comprendre cela, examinons la spécification Go.

Selon la section Slice Expressions de la spécification Go, pour les tableaux ou les chaînes, les indices sont considérés dans la plage s'ils satisfont à la condition suivante :

0 <= low <= high <= len(a)
Copier après la connexion

Si les indices se situent en dehors de cette fourchette, ils sont considérés comme hors fourchette. Cependant, pour les tranches, la limite supérieure de l'index est la capacité de la tranche, notée cap(a), par opposition à la longueur, notée len(a).

Cela signifie que les opérations de découpage suivantes sur une tranche a sont autorisés jusqu'à len(a) inclus :

a[0:]
a[1:]
a[2:]
Copier après la connexion

Dans ces cas, les tranches résultantes commencent à l'index 0 et ont des longueurs de 0, 1 et 2, respectivement.

Cependant, le découpage au-delà de la longueur de a entraîne une panique :

a[3:] // Doesn't panic (empty slice)
a[4:] // Panics
Copier après la connexion

Le découpage a[3:] ne panique pas car l'index 3 est dans le range [0, len(a)], même si cela donne une tranche vide. D'un autre côté, a[4:] panique car l'index 4 est hors de portée, où range est défini comme [0, len(a)).

Ainsi, Go permet de découper jusqu'à la longueur de le tableau sous-jacent car la spécification indique explicitement que la limite supérieure de l'index pour les tranches est définie par la capacité plutôt que par la longueur. Ce comportement permet des opérations de découpage pratiques sans provoquer de paniques involontaires dans les scénarios courants.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal