Back to questions
VK
Middle
4
Что такое интерфейс в Go и как он устроен внутри?
Companies where asked
Answer from AI
sobes.tech AI
В Go интерфейс — это набор методов, который описывает поведение. Любой тип, реализующий все методы интерфейса, автоматически удовлетворяет этому интерфейсу, без явного указания.
Внутри интерфейс представлен структурой с двумя полями: указателем на тип (type descriptor) и указателем на данные (value). Это позволяет интерфейсу хранить значение любого типа, реализующего методы интерфейса, и вызывать их динамически.
Пример интерфейса и его реализации:
type Reader interface {
Read(p []byte) (n int, err error)
}
type File struct {}
func (f *File) Read(p []byte) (int, error) {
// реализация чтения
return 0, nil
}
var r Reader = &File{} // File реализует Reader
Таким образом, интерфейс в Go — это механизм полиморфизма, основанный на неявной реализации и динамическом связывании через внутренние указатели.