Maison  >  Article  >  développement back-end  >  Comment imprimer joliment les champs de pointeur pour le débogage dans Go ?

Comment imprimer joliment les champs de pointeur pour le débogage dans Go ?

DDD
DDDoriginal
2024-11-07 18:00:05492parcourir

How to Pretty-Print Pointer Fields for Debugging in Go?

Comment imprimer joliment les champs de pointeur pour le débogage dans Go ?

Lors du débogage d'un programme Go, il peut être utile d'imprimer le contenu de structures, y compris les champs de pointeur. Cependant, par défaut, Go imprime les champs de pointeur sous forme d'adresses mémoire, ce qui peut ne pas être utile.

Considérez le code suivant :

type SomeStruct struct {
    somePointer *somePointer
}
type somePointer struct {
    field string
}

func main() {
    fmt.Println(SomeStruct{&somePointer{"I want to see what is in here"}})
}

Ce code imprime une adresse mémoire au lieu de la chaîne souhaitée valeur. Pour imprimer la valeur déréférencée, vous pouvez utiliser le package go-spew.

import (
  "github.com/davecgh/go-spew/spew"
)

func main() {
  s := SomeStruct{
    Field1: "Yahoo",
    Field2: 500,
    Field3: &somePointer{"I want to see what is in here"},
  }
  spew.Dump(s)
}

Ce code utilise la fonction spew.Dump pour imprimer le contenu de SomeStruct, y compris les valeurs déréférencées de ses champs de pointeur. Le résultat sera :

(main.SomeStruct) {
 Field1: (string) "Yahoo",
 Field2: (int) 500,
 Field3: (*main.somePointer)(0x2102a7230)({
  field: (string) "I want to see what is in here"
 })
}

Cette sortie inclut la valeur de chaîne souhaitée pour le champ field de la structure somePointer. Le package go-spew fournit un moyen pratique d'imprimer des données structurées dans un format lisible, facilitant ainsi le débogage de structures complexes avec des champs de pointeur imbriqués.

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