Maison > développement back-end > Golang > Comment imprimer la valeur, pas le pointeur, des structures imbriquées dans Go ?

Comment imprimer la valeur, pas le pointeur, des structures imbriquées dans Go ?

Patricia Arquette
Libérer: 2024-11-29 16:44:10
original
267 Les gens l'ont consulté

How to Print the Value, Not the Pointer, of Nested Structs in Go?

Impression de valeurs de structure avec des pointeurs dans Go

Dans Go, lors de l'impression d'une valeur de structure contenant des pointeurs, l'adresse du pointeur est généralement imprimée à la place de la valeur réelle. Cela peut être problématique lorsque vous essayez d'inspecter le contenu d'une structure imbriquée.

Comment imprimer la valeur de la structure B au lieu du pointeur

Pour résoudre ce problème, vous avez deux options :

  1. Implémenter le Stringer Interface :

    Implémentez la méthode String() pour les structures A et B. Cette méthode renvoie une représentation sous forme de chaîne formatée de la structure. Dans l'implémentation, imprimez les valeurs souhaitées au lieu des pointeurs.

    package main
    
    import "fmt"
    
    type A struct {
        a int32
        B *B
    }
    
    type B struct {
        b int32
    }
    
    func (aa *A) String() string {
        return fmt.Sprintf("A{a:%d, B:%v}", aa.a, *aa.B)
    }
    
    func (bb *B) String() string {
        return fmt.Sprintf("B{b:%d}", bb.b)
    }
    
    func main() {
        a := &A{a: 1, B: &B{b: 2}}
        fmt.Println(a)
    }
    Copier après la connexion
  2. Imprimer les valeurs manuellement :

    Accédez aux valeurs réelles du B struct manuellement et imprimez-les directement.

    package main
    
    import "fmt"
    
    type A struct {
        a int32
        B *B
    }
    
    type B struct {
        b int32
    }
    
    func main() {
        a := &A{a: 1, B: &B{b: 2}}
        fmt.Printf("A{a:%d, B:{b:%d}}\n", a.a, a.B.b)
    }
    Copier après la connexion

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