В чем разница интерефейса в Go и Java, C# — подобного интерфейса

«В чем разница интерефейса в Go и Java, C# — подобного интерфейса» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go интерфейсы неявные — тип автоматически удовлетворяет интерфейсу, если реализует все его методы. В Java/C# требуется явно указать implements/interface.

Пример Go:

type Writer interface { Write([]byte) (int, error) }

type MyWriter struct{}
func (mw MyWriter) Write(data []byte) (int, error) { ... }

// MyWriter автоматически удовлетворяет Writer

В Java/C# интерфейсы могут содержать дефолтные методы, поля (C#) и статические методы. В Go интерфейсы — только сигнатуры методов.

Ключевое отличие: Go интерфейсы — duck typing, Java/C# — явное наследование.