Путь джуна в Go
в Go: почему после других языков указатели сначала пугают, а потом влюбляют в себя?
Привет, Сетка! Меня зовут Акмаль, и я — Junior Go-разработчик. До того как плотно засесть за Go, я пробовал другие стеки, но именно здесь почувствовал, что такое настоящая строгая красота кода. Правда, первое время мозг упорно сопротивлялся концепциям, которые синьоры щелкают как орехи. Вот мой личный топ вещей, которые заставили меня попотеть в первые месяцы:
* Явный возврат ошибок (if err != nil). Сначала казалось: «Зачем писать это на каждой второй строчке?!». Сейчас понимаю: это приучает сразу думать о стабильности сервиса, а не надеяться на магический try-catch.
* Указатели и структуры. Передача по ссылке или по значению? Первые недели это был главный повод для зависания перед монитором, чтобы случайно не наплодить лишних аллокаций в памяти.
* Магия слайсов. Разница между length и capacity и то, как слайс незаметно перевыделяет память «под капотом» при append — отличная тема для паники на первых порах.
Главный инсайт, который я поймал:
Go называют простым языком, но эта простота обманчива. Писать код на нем действительно легко, а вот писать эффективный, читаемый и чисто «гошный» (idiomatic Go) код — это настоящее искусство, которому я сейчас активно учусь.
Сейчас я глубоко зарываюсь в конкурентность, разбираюсь с горутинами и каналами и пилю свой пет-проект (микросервис под кодовым названием «все сломалось, но работает😁»).
Коллеги-гоферы, особенно мидлы и синьоры, поделитесь в комментариях: какой концепт в Go вам давался тяжелее всего в начале пути? И на что посоветуете сделать упор джуну прямо сейчас, чтобы быстрее дорасти до мидла?
#golang, #backend, #junior, #разработка, #go.