Maison >développement back-end >Golang >Comment vérifier le pointeur nul dans Golang

Comment vérifier le pointeur nul dans Golang

(*-*)浩
(*-*)浩original
2019-12-31 14:35:327846parcourir

Comment vérifier le pointeur nul dans Golang

Lors de l'attribution d'un objet pointeur nul à une interface                                                                               eeCe n'est pas C'est difficile à comprendre, car i = pi, au lieu d'attribuer zéro à je, je pointe vers l'objet pi.

Déterminer si le pointeur dans l'interface est nul


Donc, la question est maintenant de savoir comment déterminer si le pointeur dans l'interface est nul nul?

Lorsque vous connaissez le type, vous pouvez naturellement utiliser l'assertion de type, puis la tester comme nulle. Par exemple, ai, ok := i.(*int), puis jugez ai == nil.

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

   var pi *int = nil
    var i interface{}
    i = pi
    fmt.Println(i == nil) // 结果为 false

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

func IsNil(i interface{}) bool {
    defer func() {
        recover()
    }()
    vi := reflect.ValueOf(i)
    return vi.IsNil()}
.

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!

Déclaration:
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