Maison >développement back-end >Golang >Comment puis-je éviter les erreurs hors limites lors du découpage en Go ?

Comment puis-je éviter les erreurs hors limites lors du découpage en Go ?

DDD
DDDoriginal
2024-11-28 15:59:11224parcourir

How Can I Prevent Out-of-Bounds Errors When Slicing in Go?

Slicing in Go : éviter les erreurs hors limites

Slicing nous permet de créer une nouvelle tranche à partir d'une tranche existante en spécifiant une plage d'indices . Cependant, si la plage spécifiée dépasse les limites de la tranche d'origine, une erreur hors limites peut se produire.

Dans le code fourni, la ligne c := b[1:] tente de créer un nouveau tranche c de la tranche b. L'erreur se produit car la limite d'indice élevé pour c n'est pas explicitement spécifiée et la longueur par défaut de b, qui est 0.

La forme générale du découpage dans Go est :

subslice := original[start:end]
  • start est l'index de départ inclusif de la nouvelle tranche.
  • end est l'index de fin exclusif de la nouvelle tranche. slice.

Si start est omis, la valeur par défaut est 0. Si end est omise, la valeur par défaut est len(original).

Dans le cas de slices, la limite d'index supérieure est limité par la capacité de la tranche (cap()), et non par sa longueur (len()). Cela signifie que si nous spécifions un index de fin supérieur à cap(original), il est toujours considéré comme valide. Cependant, si nous spécifions un index de fin supérieur à len(original), une erreur hors limites se produit.

Pour éviter cette erreur, nous devons nous assurer que la plage spécifiée ne dépasse pas les limites de la tranche originale. Dans l'exemple de code, nous pouvons résoudre le problème en spécifiant explicitement la limite supérieure de l'index :

c := b[1:2]

Cela créera une tranche c d'une longueur de 1 et d'une capacité de 4, contenant l'élément à l'index 1. de la tranche b.

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