В настоящее время я использую эту вспомогательную функцию для проверки интерфейсов nil и nil.
func isNil(a interface{}) bool {
defer func() { recover() }()
return a == nil || reflect.ValueOf(a).IsNil()
}
Так как reflect.ValueOf(a).IsNil()
паника, если значение Kind является чем-то другим, кроме Chan
, Func
, Map
, Ptr
, Interface
или Slice
, я отложил отложенный recover()
, чтобы поймать те.
Есть ли лучший способ добиться этой проверки? Он считает, что для этого должен быть более прямой способ.