Получи случайную криптовалюту за регистрацию!

#машины_разное Итак, благодаря Олегу Ковалову мы знаем, что | Человек и машина

#машины_разное

Итак, благодаря Олегу Ковалову мы знаем, что NaN не равен NaN. А как насчет nil != nil?

Я еще осваиваюсь в мире сусликового программирования и частенько захожу в чужие Pull Request’ы учиться уму разуму. Однажды мое внимание привлек следующий кусок кода:

if err == nil {
return err
}

В комментариях затребовали незамедлительно заменить return err на return nil, указав, что так в Go делать ни в коем случае нельзя, и что “где-то выше” такой nil не будет интерпретирован как nil!

Я прихожу из змеиного мирка, где NoneType всегда NoneType, так что я пошел за советом к коллегам. Оказалось, что: 1) есть типизированный и нетипизированный nil (што); 2) nil-значения интерфейсов содержат не только само значение (nil), но и конкретный тип (*CustomError, например) (ШТО)!

Ну а error как раз Interface, так что вариантов прострелить себе руки, ноги, затылок и спину масса.

Такие дела. Прочитать подробнее можно тут:
- https://dave.cheney.net/2017/08/09/typed-nils-in-go-2
- https://golang.org/doc/faq#nil_error

Отдельное спасибо @sergdudk за разъяснение.