Dans Go, la désorganisation des données JSON dans des structures peut donner lieu à des champs avec des valeurs nulles en raison de l'omission de champs vides. Bien qu'il soit possible de vérifier manuellement les références nulles dans de tels scénarios, cela peut s'avérer fastidieux et inefficace.
Considérez la structure profondément imbriquée suivante :
type Foo struct { Foo string Bar *Bar } type Bar struct { Bar string Baz *Baz } type Baz struct { Baz string }
Pour tester de manière générique les valeurs nulles dans les structures imbriquées, une solution élégante consiste à ajouter des méthodes getter aux structures utilisées comme pointeurs. Ces méthodes vérifient si le récepteur est nul avant d'accéder à ses champs.
func (b *Bar) GetBaz() *Baz { if b == nil { return nil } return b.Baz } func (b *Baz) GetBaz() string { if b == nil { return "" } return b.Baz }
Avec ces getters, les vérifications nulles deviennent simples et évitent les paniques d'exécution :
fmt.Println(f3.Bar.GetBaz().GetBaz()) fmt.Println(f2.Bar.GetBaz().GetBaz()) fmt.Println(f1.Bar.GetBaz().GetBaz()) if baz := f2.Bar.GetBaz(); baz != nil { fmt.Println(baz.GetBaz()) } else { fmt.Println("something nil") }
Cette technique exploite les appels de méthode sécurisés avec des récepteurs de pointeurs et simplifie le processus de test des valeurs nulles dans les structures imbriquées. Il fournit une solution générique et efficace sans risque d'erreurs d'exécution, ce qui en fait une approche précieuse pour les hiérarchies de structures complexes.
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!