Sobes.tech
Middle

¿Qué es una interfaz en Go? ¿Cómo funciona el tipado de pato? ¿Se puede verificar la implementación de una interfaz durante la compilación?

sobes.tech AI

Respuesta de la IA

В Go интерфейс — это набор методов, которые должен реализовать тип, чтобы считаться реализацией этого интерфейса. Интерфейсы в Go неявно реализуются: если тип имеет все методы интерфейса, то он автоматически его реализует — это и есть пример duck typing ("если что-то ходит как утка и крякает как утка, значит это утка").

Duck typing позволяет писать более гибкий и расширяемый код без явного указания реализации интерфейса.

Проверка реализации интерфейса во время компиляции возможна с помощью присваивания пустого значения интерфейса переменной конкретного типа или с помощью _var _ интерфейс = (*Тип)(nil). Например:

var _ io.Reader = (*MyType)(nil) // проверка, что MyType реализует io.Reader

Если MyType не реализует все методы io.Reader, компилятор выдаст ошибку.