Несколько месяцев назад я поставил свои деньги на то, чтобы научить себя Голангу. Я хотел взглянуть на Go по нескольким причинам. Во-первых, простота упаковки и поддержка gRPC. Следующей была модель параллелизма и то, как работают подпрограммы go. Последнее из сообщества и ресурсов вокруг языка и экосистемы.

Проведя несколько часов на YouTube и прочитав несколько статей и руководств, я убедился, что мне нужно хорошее место для изучения основ. В конце концов, без основ мы просто делаем предположения на основе проб и ошибок. Я просмотрел несколько книг и видеокурсы.

Я начал с того, что провел несколько часов, пройдя ускоренный курс Go, чтобы почувствовать язык и конструкции. После того, как это было сделано, я получил лучшую вводную книгу, которую я когда-либо читал по языку программирования Go in Action.

Эти авторы проделывают такую ​​потрясающую работу, а примеры, использованные в книге, практичны и заставляют задуматься. Первая глава дает вам представление о том, как эффективно использовать горутины и параллелизм в ваших приложениях. Пояснения о том, как работают внутренние компоненты из массивов, фрагментов, сопоставлений с интерфейсами.

Эта книга была просто отличной. Но мне чего-то не хватало. Я хотел практиковать то, что узнал. Так что, как и в большинстве других случаев, я думал о том, что бы построить. Как правило, когда вам нужно использовать другой стек в работе над проектом, вы также хорошо изучите стек. И я подумал, а почему бы и нет. Через неделю или две я понял, что это не помогает. Просто потому, что некоторые конструкции и то, как они используются, мне немного чужды. Так что я счел это менее естественным. Когда я думал о том, как преодолеть эту проблему, я вспомнил, как смотрел это видео Кэмерона Прайса на Micropatterns. Здесь он рассказал, как ему удалось изучить Эликсир, делая небольшие шаги и решая небольшие проблемы. Посмотрев это, я решил запустить Go trackerciseism.io.

Как только я начал трек, я также взял себе копию Little Go Book, в конечном итоге я использовал маленькую Go Book в качестве справочника всякий раз, когда я хотел быстро обновить какую-то тему. И если я хочу полностью перечитать какую-то область, я бы вернулся к главам, связанным с Go in Action. Имея все это в руках, я в настоящее время оттачиваю свои основы программирования на Go.

Трек с наставниками на сайте excism.io сделает обучение намного более увлекательным, а сообщество предоставит вам отзывы о том, как решить проблему. Просмотр опубликованных ответов сообщества на ту же проблему дает вам представление о том, как мыслили другие разработчики, что они сделали хорошо и чему вы можете научиться друг у друга.

На мой взгляд, до сих пор это был самый продуктивный опыт обучения, который у меня был за последние 5+ лет. И эти микропаттерны или проблемы, которые я решаю, дают мне представление о мелких деталях, которые я бы упустил в противном случае, если бы создавал приложение начального уровня для изучения языка и экосистемы.

Вот множество других мест, где вы можете легко найти ответы на свои вопросы, когда вы изучаете Go lang,