Maison >développement back-end >Golang >Comment puis-je afficher les valeurs sous-jacentes des champs de pointeur dans les structures Go pendant le débogage ?

Comment puis-je afficher les valeurs sous-jacentes des champs de pointeur dans les structures Go pendant le débogage ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 14:27:03332parcourir

How Can I Display the Underlying Values of Pointer Fields in Go Structs During Debugging?

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!

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