Maison > développement back-end > Golang > Comment gérer efficacement les valeurs nulles dans les structures Go imbriquées ?

Comment gérer efficacement les valeurs nulles dans les structures Go imbriquées ?

Patricia Arquette
Libérer: 2024-12-31 11:11:09
original
532 Les gens l'ont consulté

How to Effectively Handle Nil Values in Nested Go Structures?

Test des valeurs nulles dans les structures imbriquées

Les structures imbriquées dans Go sont un phénomène courant, en particulier lorsqu'il s'agit de données non rassemblées à partir de JSON. Cependant, ces structures ont souvent des champs « omitomitempty », ce qui entraîne un mélange de valeurs non nulles et nulles à différents niveaux.

Pour résoudre ce problème, il existe deux approches courantes :

1. Vérification manuelle nulle :

Cela implique de vérifier explicitement les valeurs nulles à chaque niveau, en utilisant des instructions if telles que :

if f2.Bar != nil && f2.Bar.Baz != nil {
    fmt.Println(f2.Bar.Baz.Baz)
}
Copier après la connexion

Cette méthode est simple mais peut devenir répétitive et fastidieuse pour les personnes en profondeur. structures imbriquées.

2. Getters pour les récepteurs de pointeurs :

Une approche plus élégante et efficace consiste à définir des méthodes getter pour les champs utilisés comme pointeurs dans la structure. Ces getters vérifient si le récepteur est nul et renvoient la valeur zéro si c'est le cas. Sinon, ils renvoient la valeur du champ.

Par exemple, en utilisant des getters pour les structures Bar et Baz :

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 des getters dans place, la vérification des valeurs nulles devient simplifiée :

fmt.Println(f3.Bar.GetBaz().GetBaz()) // No panic

if baz := f2.Bar.GetBaz(); baz != nil {
    fmt.Println(baz.GetBaz())
}
Copier après la connexion

Cette méthode élimine le besoin d'instructions if répétitives et garantit que le déréférencement des pointeurs nuls n'entraîne jamais de panique à l'exécution. Il s'aligne également sur l'approche utilisée dans le code Go généré pour les messages protobuf, offrant un moyen naturel et cohérent de gérer les valeurs nulles dans des 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
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