Почему джависты ищут кнопку «implements»
Когда я, после 17 лет в Java Enterprise, открыл свой первый серьезный проект на Go, я долго не мог понять: как система понимает, какой класс реализует мой интерфейс? Я искал ключевое слово implements, заглядывал в конфиги, грешил на магию компилятора. Оказалось, всё гораздо проще и... провокационнее. Добро пожаловать в мир Duck Typing (утиной типизации). Бюрократия Java vs Свобода Go
В Java (особенно в Jakarta EE) интерфейс — это закон. Если ты не объявил явно, что твой класс реализует UserRepository, то никакая сила в мире не заставит компилятор в это поверить. Мы привыкли сначала проектировать иерархию, а потом писать код.
В Go всё наоборот. Если твоя структура имеет метод Save(), она уже реализует любой интерфейс, где есть метод Save(). Ей не нужно об этом заявлять. «Если это выглядит как утка и крякает как утка — значит, это утка». Для Enterprise-разработчика это звучит как анархия, но на деле это высшая форма развязки (decoupling). Почему