Maison >développement back-end >Golang >Pourquoi le découpage de « b[1 :] » provoque-t-il une erreur hors limites dans Go ?
Slicing : Erreur hors limites dans Go
Lors de l'exécution du code suivant :
package main import "fmt" func main() { a := make([]int, 5) printSlice("a", a) b := make([]int, 0, 5) printSlice("b", b) c := b[1:] printSlice("c", c) } func printSlice(s string, x []int) { fmt.Printf("%s len=%d cap=%d %v\n", s, len(x), cap(x), x) }
vous rencontrez un Erreur "hors limites". Cette erreur se produit en raison d'une expression de découpage non valide lors de la création de la tranche c.
Dans Go, le découpage d'un tableau ou d'une tranche suit ces règles :
L'expression de découpage b[1:] tente de créer une nouvelle tranche c avec une limite inférieure de 1. Cependant, la limite supérieure est manquant et la longueur par défaut de b, qui est 0. Cela se traduit par une tranche avec une limite inférieure supérieure à sa limite supérieure, conduisant à l'erreur "hors limites".
Pour corriger cette erreur, vous devez vous assurer que la limite supérieure de l'expression de découpage est supérieure ou égale à la limite inférieure. Par exemple, vous pouvez utiliser l'expression suivante pour créer une tranche c valide :
c := b[1:2]
Cela crée une tranche c avec une limite inférieure de 1 et une limite supérieure de 2, qui est valide puisque 1 < = 2 <= cap(b) (la capacité de b est de 5).
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!