Maison >développement back-end >Golang >Comment puis-je imprimer les valeurs déréférencées des pointeurs dans les structures Go pour un débogage efficace ?

Comment puis-je imprimer les valeurs déréférencées des pointeurs dans les structures Go pour un débogage efficace ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-06 08:43:021028parcourir

How Can I Print Dereferenced Values of Pointers in Go Structs for Effective Debugging?

Champs de déréférencement pour le débogage

Lors de l'impression d'une structure Go contenant des pointeurs, la sortie affiche généralement les adresses mémoire au lieu des valeurs réelles. Pour améliorer le débogage, il est souhaitable d'imprimer les valeurs déréférencées.

Solution : Utilisation du package go-spew

Le package go-spew fournit une solution pratique. Il peut être utilisé pour vider une structure, y compris des champs qui sont des pointeurs, affichant également les valeurs déréférencées.

Exemple :

Considérez la structure Go suivante :

package main

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

type (
  SomeStruct struct {
    Field1 string
    Field2 int
    Field3 *somePointer
  }
  somePointer struct {
    field string
  }
)

Dans la fonction principale, créez une instance de SomeStruct et transmettez-la à spew.Dump :

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

Cela affichera 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"
 })
}

La valeur déréférencée souhaitée ("Je veux voir ce qu'il y a ici") est désormais visible sous le champ Field3. Cela permet une inspection facile des pointeurs dans des structures complexes pendant le débogage.

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