Beim Zuweisen eines Nullzeigerobjekts zu einer Schnittstelle eeDas ist nicht schwer zu verstehen, weil i = pi, anstatt i Null zuzuweisen , i zeigt auf das Objekt pi.
Bestimmen Sie, ob der Zeiger in der Schnittstelle null ist
Die Frage ist nun also, wie Sie feststellen können, ob der Zeiger in der Schnittstelle null ist null?
Wenn Sie den Typ kennen, können Sie natürlich Typzusicherungen verwenden und diese dann mit Null auswerten. Zum Beispiel ai, ok := i.(*int) und dann beurteilen ai == nil.
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 suchenvar pi *int = nil var i interface{} i = pi fmt.Println(i == nil) // 结果为 false
func IsNil(i interface{}) bool { defer func() { recover() }() vi := reflect.ValueOf(i) return vi.IsNil()}
Das obige ist der detaillierte Inhalt vonSo überprüfen Sie den Nullzeiger in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!