Maison >développement back-end >Golang >Go Client HTTP : Comment éviter « panique : erreur d'exécution : adresse mémoire invalide ou déréférencement de pointeur nul » ?
Go : panique : erreur d'exécution : adresse mémoire invalide ou déréférencement de pointeur nul
Lors de l'exécution d'un programme Go, une panique peut survenir en raison de une adresse mémoire invalide ou un déréférencement de pointeur nul. Ce message d'erreur indique souvent un problème d'exécution plutôt qu'un bug de programme spécifique.
Dans ce cas, le code Go fourni démontre des problèmes potentiels avec la gestion du client HTTP.
Le problème
Le code utilise la méthode func (*Client) Do pour effectuer des requêtes HTTP. Cependant, il ne parvient pas à vérifier les erreurs renvoyées par le client avant de tenter d'accéder au corps de la réponse.
La solution
Selon la documentation de func (*Client) Même si un code d'état HTTP non-2xx est reçu, cela n'entraîne pas d'erreur. Au lieu de cela, l'erreur n'est renvoyée que si elle est causée par la politique du client ou une erreur de protocole HTTP.
Le code, cependant, vérifie les erreurs après avoir accédé au corps de la réponse (res.Body). Cela peut entraîner une erreur en raison d'une adresse mémoire non valide ou d'un déréférencement de pointeur nul.
Pour résoudre ce problème, le code doit être modifié pour vérifier les erreurs avant d'accéder au corps de la réponse, comme ceci :
res, err := client.Do(req) if err != nil { return nil, err } defer res.Body.Close()
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!