Pourquoi la syntaxe de tranche dans Go exclut-elle la limite supérieure (hi) ?
La syntaxe de tranche Go s[lo:hi] spécifie un gamme d'éléments allant de l'indice lo (inclus) à hi-1 (exclusif). Cela diffère de l'attente intuitive selon laquelle hi serait inclus dans la gamme.
Justification de la conception
Le choix du tranchage exclusif est une question de convention et offre plusieurs avantages :
-
Simplicité arithmétique des pointeurs : Dans Go, les tranches sont essentiellement des pointeurs avec une longueur associée. Avec des tableaux indexés 0 et un découpage exclusif, l'adresse de l'élément i est simplement la valeur du pointeur plus i.
-
Longueur de tableau pratique : La longueur d'une tranche est également son "point de partage". " Cela signifie que arr[0:len(arr)] est équivalent à arr, ce qui le rend pratique pour des opérations telles que la division d'un tableau en segments.
-
Indices sans chevauchement : Le découpage exclusif garantit que des tranches consécutives couvrent entièrement le tableau d'origine. Cela simplifie les opérations telles que la division d'un tableau en fonction d'entiers non consécutifs.
En revanche, le découpage inclusif - où [lo:hi] inclut à la fois lo et hi - entraînerait des tranches qui se chevauchent et compliquerait certaines opérations. .
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!