Я если честно не заглядывал в реализацию, но что-то мне кажется что Nil - это не структура в рантайме которая хранит тип. Скорее указатель это структура которая хранит тип. Отсюда я делаю вывод что nil - не типизированный. Хотя могу конечно ошибаться. Вот я и спросил
nil - это значение
это значение определенного типа.
когда вы в коде пишеье nil
- компилятор вычисляет, какого он должен быть типа, и подставляет соответствующий (как для нетипизованных констант)
и, один раз вычислив тип nil
, компилятор строго следит за тем, чтобы он использовался в соответствии с этим типом