any в Go — псевдоним interface{}, то есть пустого интерфейса. Но interface с заданными методами — более узкий контракт, и он не равен any.
В чём разница между interface и any в Go?
any в Go — псевдоним interface{}, то есть пустого интерфейса. Но interface с заданными методами — более узкий контракт, и он не равен any.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
any в Go — псевдоним interface{}, то есть пустого интерфейса. Но interface с заданными методами — более узкий контракт, и он не равен any.
var x any может хранить значение любого типа, включая nil. Для вызова специфичного метода нужны утверждение типа, type switch или заранее объявленный интерфейс с этим методом. any появился как alias в Go 1.18 и не вводит новый механизм динамической типизации. Не путайте nil-интерфейс с интерфейсом, содержащим typed nil pointer.
Источник: go.dev.