tgoop.com/goproglib/5527
Create:
Last Update:
Last Update:
Как проверить, пуст ли интерфейс (interface{}) в Go?
В Go интерфейс считается пустым, только если оба его компонента (динамическое значение и тип) равны nil. Однако есть нюансы, о которых стоит знать.
Если интерфейс действительно пустой (значение и тип nil), проверка if myInterface == nil вернет true.
var i interface{}
if i == nil {
fmt.Println("Интерфейс пустой")
}
Если интерфейс содержит nil с типом (например, *int), он не будет считаться пустым.
var i interface{} = (*int)(nil)
if i == nil {
fmt.Println("Пустой") // Не выполнится
} else {
fmt.Println("Не пустой") // Вывод: Не пустой
}
Для точной проверки используйте пакет reflect:
import "reflect"
func isEmptyInterface(i interface{}) bool {
return i == nil || reflect.ValueOf(i).IsZero()
}