В сети гуляет опасный миф: «Go настолько прост, что любой джавист выучит его за субботу и воскресенье». Как человек, который провел в экосистеме Java долгие годы, скажу честно: это ловушка.
Да, синтаксис Go можно выписать на одной салфетке. Но дьявол кроется не в ключевых словах, а в смене парадигмы. Вы быстро напишете свой первый микросервис. Вы восхититесь скоростью компиляции. Но как только дело дойдет до реальной архитектуры, ваш внутренний Java-архитектор начнет требовать: В Java мы привыкли к четким контрактам: class A implements B. В Go интерфейсы реализуются неявно. Это «магия», к которой нужно привыкнуть. Вы не говорите системе, кто вы — вы просто делаете то, что от вас ждут. Для мозга, привыкшего к строгим иерархиям Enterprise-класса, это настоящий культурный шок. После «безопасной» JVM, где за памятью следит Garbage Collector (и мы почти не думаем о ссылках), в Go вам придется снова вспомнить, что такое указатель. Передать по значению или по ссылке? Где произойдет аллокация