Maison  >  Article  >  développement back-end  >  Résoudre l'erreur Golang : index hors plage, solution

Résoudre l'erreur Golang : index hors plage, solution

WBOY
WBOYoriginal
2023-08-22 11:46:503238parcourir

解决golang报错:index out of range,解决方法

Solution à l'erreur Golang : index hors plage, solution

Lorsque vous utilisez Golang pour écrire des programmes, vous rencontrez souvent une erreur : index hors plage. Cette erreur signifie généralement que nous accédons à un tableau, une tranche ou une chaîne en dehors de sa plage d'index. Cet article présentera la cause de cette erreur et proposera plusieurs solutions.

Tout d'abord, regardons un exemple de code simple :

package main

import "fmt"

func main() {
    arr := [3]int{1, 2, 3}
    fmt.Println(arr[3])
}

Exécutez le code ci-dessus, nous obtiendrons le message d'erreur suivant :

panic: runtime error: index out of range

goroutine 1 [running]:
main.main()
        /path/to/your/code/main.go:7 +0x4e
exit status 2

Ce message d'erreur nous indique que l'erreur s'est produite à la ligne 7 du code. Dans cette ligne de code, nous essayons d'accéder au 3ème élément d'un tableau arr, mais en fait le tableau ne comporte que 3 éléments, et la plage d'index est de 0 à 2. Par conséquent, l'accès à arr[3] dépasse la plage d'index, ce qui entraîne cette erreur.

Alors, comment résoudre ce problème ? Voici quelques solutions de contournement :

  1. Vérifiez la plage d'index : avant d'accéder à un élément spécifique d'un tableau, d'une tranche ou d'une chaîne, assurez-vous toujours que l'index se trouve dans une plage valide. Par exemple, dans l'exemple ci-dessus, nous pouvons modifier le code comme suit :
package main

import "fmt"

func main() {
    arr := [3]int{1, 2, 3}
    if len(arr) > 3 {
        fmt.Println(arr[3])
    } else {
        fmt.Println("索引超出范围")
    }
}

Dans ce code modifié, nous utilisons d'abord la fonction len() pour obtenir la longueur du tableau arr, puis déterminons si la longueur est supérieure que 3. Si tel est le cas, accédez à arr[3], sinon affichez "index hors plage".

  1. Parcours à l'aide du mot-clé range : lors du parcours d'un tableau, d'une tranche ou d'une chaîne, nous pouvons utiliser le mot-clé range pour éviter de dépasser la plage d'index. Par exemple :
package main

import "fmt"

func main() {
    arr := [3]int{1, 2, 3}
    for i, value := range arr {
        fmt.Println(i, value)
    }
}

Dans l'exemple ci-dessus, nous parcourons le tableau arr en utilisant le mot-clé range. Dans chaque itération, i représente l'index de l'élément actuel et value représente la valeur de l'élément actuel. De cette façon, nous n’avons pas à craindre de sortir de la plage d’index.

  1. Utilisez des tranches au lieu de tableaux : une tranche est une séquence de taille dynamique qui est plus flexible qu'un tableau. Lors de l'utilisation du découpage, nous pouvons utiliser la fonction append() pour ajouter dynamiquement des éléments afin d'éviter le problème du dépassement de la plage d'index. Par exemple :
package main

import "fmt"

func main() {
    slice := []int{1, 2, 3}
    fmt.Println(slice[3]) // 报错:index out of range
    slice = append(slice, 4)
    fmt.Println(slice[3]) // 输出:4
}

Dans cet exemple, nous définissons d'abord une tranche, contenant 3 éléments. Ensuite, nous essayons d'accéder à slice[3], ce qui entraîne une erreur. Ensuite, nous utilisons la fonction append() pour ajouter dynamiquement un élément 4. À ce stade, la longueur de la tranche devient 4. Nous accédons à nouveau à slice[3] et le résultat de sortie est 4.

Résumé :
Lors de l'écriture de programmes en Golang, il est inévitable de rencontrer des erreurs d'index hors plage. Mais en prêtant attention à la plage de l'index, en utilisant le mot-clé range pour parcourir et en utilisant des tranches au lieu de tableaux, nous pouvons résoudre efficacement ce problème. J'espère que l'introduction de cet article pourra être utile à tout le monde rencontrant des problèmes similaires dans le développement de Golang.

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