Maison > développement back-end > Golang > Comment déterminer si un pointeur est nul dans Golang

Comment déterminer si un pointeur est nul dans Golang

Libérer: 2020-01-13 10:51:59
original
6945 Les gens l'ont consulté

Comment déterminer si un pointeur est nul dans Golang

Méthode de Golang pour déterminer si un pointeur est vide :

1 Lorsque vous connaissez le type, vous pouvez naturellement utiliser des assertions de type, puis déterminer s'il est vide. Par exemple, ai, ok := i.(*int), puis jugez ai == nil.

2. Je ne sais pas de quel type de pointeur il s'agit, je dois donc utiliser la réflexion vi := reflex.ValueOf(i), puis utiliser vi.IsNil() pour juger. Mais si je n'est pas un pointeur, une exception se produira lors de l'appel de IsNil. Vous devrez peut-être écrire une fonction comme celle-ci pour vérifier null

func IsNil(i interface{}) bool {
    defer func() {
        recover()
    }()
    vi := reflect.ValueOf(i)
    return vi.IsNil()
}
Copier après la connexion

Mais ce n'est vraiment pas beau d'imposer un report de récupération comme celui-ci. ceci, donc j'utilise le jugement de type. Cela devient comme ça

func IsNil(i interface{}) bool {
    vi := reflect.ValueOf(i)
    if vi.Kind() == reflect.Ptr {
        return vi.IsNil()
    }
    return false
}
Copier après la connexion

Pour plus de connaissances sur Golang, veuillez faire attention à la colonne tutoriel Golang du site Web PHP chinois.

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!

Étiquettes associées:
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