Personnalisation de la sortie d'impression des structures avec des pointeurs
Lors de l'impression de structures avec des pointeurs dans Go, l'utilisation du spécificateur de format %v par défaut peut ne pas fournir le résultat souhaité. En effet, il imprime l'adresse du pointeur au lieu du contenu de la structure référencée.
Pour résoudre ce problème, il existe deux approches principales : définir une méthode String personnalisée pour le type de structure ou formater manuellement la sortie.
Définition d'une méthode de chaîne personnalisée
La méthode préférée consiste à implémenter l'interface Stringer pour les types de structure impliqués. Cela peut être fait en ajoutant une méthode de chaîne String() à la structure. La chaîne de format passée à la fonction printf appellera cette méthode à la place.
Par exemple :
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.Printf("v ==== %v \n", a) // Prints "v ==== A{a:1, B:B{b:2}}" }
Formatage manuel
En l'absence de une méthode String, vous pouvez formater la sortie manuellement à l'aide des spécificateurs de format des membres individuels de la structure.
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("v ==== A{a:%d, B: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!