Вопрос: Как работают интерфейсы с nil и почему "interface != nil" при nil внутри?

Go Junior Без компании
Вопрос: Как работают интерфейсы с nil и почему "interface != nil" при nil внутри?
Ответы
Интерфейс — это (type, value). Он равен nil только если и type=nil, и value=nil. Если type задан, а value=nil — интерфейс не nil. ```go package main import "fmt" type MyErr struct{} func (MyErr) Error() string { return "x" } func f() error { var e *MyErr = nil return e // type=*MyErr, value=nil } func main() { err := f() fmt.Println(err == nil) // false } ``` Решение: возвращать nil явно, если ошибки нет.