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 :
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) }
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) }
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!