Назад к вопросам
Avito
Senior
6
Что такое интерфейсы и чем они отличаются от классов?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go интерфейс — это набор методов, которые должен реализовать тип, чтобы считаться соответствующим этому интерфейсу. В отличие от классов, интерфейсы не содержат реализации, а только описывают поведение.
Ключевые отличия:
- Интерфейсы описывают только методы, классы (в Go — структуры) содержат данные и методы.
- В Go нет классов как таковых, есть структуры и интерфейсы.
- Тип автоматически реализует интерфейс, если у него есть все методы интерфейса (неявная реализация).
Пример:
// Интерфейс
type Reader interface {
Read(p []byte) (n int, err error)
}
// Структура, реализующая интерфейс
type File struct {}
func (f File) Read(p []byte) (n int, err error) {
// реализация
return 0, nil
}
func main() {
var r Reader = File{} // File реализует Reader
}