В настоящее время я использую эту вспомогательную функцию для проверки интерфейсов 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(), чтобы поймать те.
Есть ли лучший способ добиться этой проверки? Он считает, что для этого должен быть более прямой способ.