golangでポインタがnullかどうかを判断する方法

リリース: 2020-01-13 10:51:59
オリジナル
6900 人が閲覧しました

golangでポインタがnullかどうかを判断する方法

ポインターが空かどうかを判断する Golang の方法:

1. 型がわかっていれば、自然に型アサーションを使用して、それが空かどうかを判断できます。たとえば、ai, ok := i.(*int) の場合、ai == nil と判断します。

2. ポインターの種類がわからない場合は、リフレクション vi :=reflect.ValueOf(i) を使用してから、vi.IsNil() を使用して判断する必要があります。ただし、i がポインターではない場合、IsNil を呼び出すときに例外が発生します。null を検出するには、このような関数を記述する必要があるかもしれません

func IsNil(i interface{}) bool {
    defer func() {
        recover()
    }()
    vi := reflect.ValueOf(i)
    return vi.IsNil()
}
ログイン後にコピー

しかし、このように遅延回復を強制するのは、実際には見栄えがよくありません

func IsNil(i interface{}) bool {
    vi := reflect.ValueOf(i)
    if vi.Kind() == reflect.Ptr {
        return vi.IsNil()
    }
    return false
}
ログイン後にコピー

Golang の詳細については、PHP 中国語 Web サイトの golang チュートリアル 列に注目してください。

以上がgolangでポインタがnullかどうかを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート