Ответ
В 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# — явное наследование.