Heim >Backend-Entwicklung >Golang >So ermitteln Sie, ob ein Zeiger in Golang null ist

So ermitteln Sie, ob ein Zeiger in Golang null ist

尚
Original
2020-01-13 10:51:596941Durchsuche

So ermitteln Sie, ob ein Zeiger in Golang null ist

Golangs Methode zur Bestimmung, ob ein Zeiger leer ist:

1 Wenn Sie den Typ kennen, können Sie natürlich Typzusicherungen verwenden und dann feststellen, ob er leer ist. Zum Beispiel ai, ok := i.(*int) und dann beurteilen ai == nil.

2. Ich weiß nicht, um welche Art von Zeiger es sich handelt, daher muss ich Reflection vi :=flect.ValueOf(i) und dann vi.IsNil() zur Beurteilung verwenden. Aber wenn i kein Zeiger ist, tritt beim Aufruf von IsNil eine Ausnahme auf. Möglicherweise müssen Sie eine Funktion wie diese schreiben, um nach Null zu suchen

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

Aber es ist wirklich hässlich, eine solche Verzögerung aufzuerlegen Ich verwende die Typbeurteilung. Es wird so:

func IsNil(i interface{}) bool {
    vi := reflect.ValueOf(i)
    if vi.Kind() == reflect.Ptr {
        return vi.IsNil()
    }
    return false
}

Weitere Golang-Kenntnisse finden Sie in der Spalte Golang-Tutorial auf der chinesischen PHP-Website.

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob ein Zeiger in Golang null ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn