Maison > développement back-end > Golang > Comment déréférencer les champs de pointeur pour un débogage efficace dans Go ?

Comment déréférencer les champs de pointeur pour un débogage efficace dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-10 02:09:02
original
931 Les gens l'ont consulté

How to Dereference Pointer Fields for Effective Debugging in Go?

Déréférencement des champs de pointeur pour le débogage

Lors de l'impression d'une structure avec des champs de pointeur, ils sont généralement affichés sous forme d'adresses mémoire. Cela peut être gênant pour le débogage, surtout si une structure contient de nombreux champs de pointeur.

Considérez cet exemple :

package main

import "fmt"

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

func main() {
    fmt.Println(SomeStruct{&somePointer{"I want to see what is in here"}})
}
Copier après la connexion

Ce code imprime l'adresse mémoire au lieu de la valeur souhaitée :

{0x10500168}
Copier après la connexion

Pour imprimer la valeur réelle stockée dans le champ du pointeur, nous pouvons utiliser le package go-spew, spécialisé dans l'impression de structures de données complexes dans un format lisible par l'homme.

Voici comment utiliser it :

package main

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

type (
    SomeStruct struct {
        Field1 string
        Field2 int
        Field3 *somePointer
    }
    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)
}
Copier après la connexion

Ce code produit 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"
    })
}
Copier après la connexion

Comme vous pouvez le voir, go-spew fournit une représentation beaucoup plus détaillée et informative de la structure. Les champs de pointeur sont déréférencés et affichés comme leurs valeurs réelles. Cela rend beaucoup plus facile l'inspection du contenu d'une structure 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal