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 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)
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:]
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
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!