Débogage des champs de pointeur
Dans Go, l'impression d'une structure contenant des champs de pointeur génère généralement des adresses mémoire plutôt que les valeurs réelles. Cela peut être gênant lors du débogage, en particulier lorsqu'il s'agit de nombreux champs de pointeur.
Déréférencement des champs de pointeur
Pour afficher les valeurs sous-jacentes des champs de pointeur, une option consiste à manuellement déréférencez chaque champ à l’aide de l’opérateur astérisque (*). Cependant, cette approche devient fastidieuse pour les structures comportant plusieurs champs de pointeur.
Utiliser go-spew
Go offre un outil puissant pour déboguer de tels scénarios : le package go-spew . Ce package fournit un moyen simple d'approfondir la structure de n'importe quelle valeur.
Exemple
Considérez le code suivant :
package main import ( "fmt" "github.com/davecgh/go-spew/spew" ) type SomeStruct struct { Field1 string Field2 int Field3 *somePointer } type somePointer struct { field string } func main() { s := SomeStruct{ Field1: "Yahoo", Field2: 500, Field3: &somePointer{"I want to see what is in here"}, } spew.Dump(s) }
Quand vous exécutez ce code, il imprime le résultat suivant :
(main.SomeStruct) { Field1: (string) "Yahoo", Field2: (int) 500, Field3: (*main.somePointer)(0x2102a7230)({ field: (string) "I want to see what is in here" }) }
Comme vous pouvez le voir, le package go-spew fournit une sortie plus détaillée et structurée, y compris les valeurs sous-jacentes des champs de pointeur. Cela facilite grandement le débogage et la compréhension du contenu des structures.
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!