Maison > développement back-end > Golang > Comment accéder en toute sécurité aux valeurs nulles imbriquées dans les structures Go ?

Comment accéder en toute sécurité aux valeurs nulles imbriquées dans les structures Go ?

Mary-Kate Olsen
Libérer: 2024-12-27 20:43:10
original
528 Les gens l'ont consulté

How to Safely Access Nested Nil Values in Go Structs?

Test de valeurs nulles dans des structures imbriquées

Lorsque vous travaillez avec des structures imbriquées dans Go, il est courant de rencontrer des scénarios dans lesquels certains champs peuvent être nuls en raison du déclassement "omitemptyempty". Cela nécessite une méthode pour accéder de manière fiable aux champs profondément imbriqués sans déclencher de paniques à l'exécution.

Test générique nul

Une approche courante consiste à vérifier manuellement les valeurs nulles à l'aide d'instructions if. Cependant, cela peut devenir fastidieux, surtout pour les structures profondément imbriquées. Une solution plus générique consiste à implémenter des getters avec des récepteurs de pointeurs dans les structures pouvant contenir des champs nuls.

Fonctions Getter

Par exemple, en considérant les fonctions Foo, Bar et Structures Baz :

type Bar struct {
    Bar string
    Baz *Baz
}

type Baz struct {
    Baz string
}
Copier après la connexion

Nous pouvons définir les getters comme suit :

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

Utilisation des getters

Avec ces getters, nous pouvons accéder aux champs imbriqués sans erreurs d'exécution, même si certains champs sont nuls :

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

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

Cette approche garantit la sécurité des types et élimine les paniques d'exécution associées à l'accès aux pointeurs nuls. Il fournit également une manière plus concise et élégante de gérer les valeurs nulles imbriquées.

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