Maison > développement back-end > Golang > Comment tester efficacement les valeurs nulles dans des structures Go profondément imbriquées ?

Comment tester efficacement les valeurs nulles dans des structures Go profondément imbriquées ?

DDD
Libérer: 2024-12-27 07:25:14
original
854 Les gens l'ont consulté

How to Efficiently Test for Nil Values in Deeply Nested Go Structs?

Test des valeurs nulles dans des structures profondément imbriquées

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.

Une approche générique utilisant des getters

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
}
Copier après la connexion

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
}
Copier après la connexion

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

Conclusion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal