В чём разница между interface и any в Go?

any в Go — псевдоним interface{}, то есть пустого интерфейса. Но interface с заданными методами — более узкий контракт, и он не равен any.

Короткий ответ

Что ответить на собеседовании

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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее