Maison > développement back-end > Golang > le corps du texte

Vérifiez zéro, puis attribuez une valeur à partir de la structure

PHPz
Libérer: 2024-02-09 13:54:08
avant
524 Les gens l'ont consulté

检查 nil 后从结构体中赋值

L'éditeur de PHP, Strawberry, vous présentera aujourd'hui une technique de programmation courante : "vérifier zéro puis attribuer une valeur à partir de la structure". Lors de l'écriture de code, nous rencontrons souvent des situations où nous devons obtenir la valeur d'un certain champ à partir d'une structure. Cependant, en raison de la possibilité de valeurs nulles, prendre directement la valeur peut provoquer le blocage du programme. Afin de résoudre ce problème, nous devons effectuer une vérification nulle avant de prendre la valeur afin de garantir la stabilité du programme. Cet article présentera en détail la mise en œuvre spécifique de cette technique pour aider les lecteurs à mieux la comprendre et l'appliquer dans le développement réel.

Contenu de la question

J'ai une structure qui contient des éléments tels que la structure.

Supposons que ma distribution soit la suivante :

validfrom := dkdm.authenticatedpublic.requiredextensions.kdmrequiredextensions.contentkeysnotvalidbefore Ces données sont dynamiques et tout élément à tout moment peut être nul en raison d'une erreur d'analyse ou de l'absence de données.

Par exemple, kdmrequiredextensions 可以为 nil,当我尝试访问 contentkeysnotvalidbefore cela générera une erreur de référence de pointeur nulle.

Est-il possible d'avoir une méthode qui prend des éléments et vérifie la chaîne de valeurs un par un, en ne retournant que si aucun élément n'est nul.

validfrom := checkandassign(dkdm.authenticatedpublic.requiredextensions.kdmrequiredextensions.contentkeysnotvalidbefore)
Copier après la connexion

J'ai essayé une instruction if avant le devoir, mais j'espérais une manière plus propre.

if dkdm.AuthenticatedPublic.RequiredExtensions != nil &&
    dkdm.AuthenticatedPublic.RequiredExtensions.KDMRequiredExtension != nil {
      validFrom = dkdm.AuthenticatedPublic.RequiredExtensions.KDMRequiredExtensions.ContentKeysNotValidBefore
}
Copier après la connexion

Solution de contournement

Est-il possible d'avoir un moyen qui accepte les éléments et vérifie la chaîne de valeurs un par un, en ne revenant que si aucun élément n'est nul.

Non, il n'existe pas de syntaxe ou d'outils de ce type.

J'ai essayé une instruction if avant le devoir, mais j'espérais une manière plus propre.

if les déclarations sont la manière « propre ». Vous pouvez le raccourcir en introduisant une nouvelle variable comme

if re := dkdm.AuthenticatedPublic.RequiredExtensions; re != nil && 
    re.KDMRequiredExtension != nil  {
    ....
}
Copier après la connexion

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:stackoverflow.com
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!