По какой-то причине в этом году я решил бросить себе вызов и пройти все курсы CPSC, которые кажутся пугающими. В прошлом семестре я прошел курс параллельных вычислений, и мне было очень весело работать с Erlang и CUDA, в этом семестре я прохожу курс по распределенным системам и работаю с Golang. Итак, я решил проверить это во время зимних каникул, прежде чем семестр снова станет занятым.

Это был мой первый раз, когда я действительно работал с Go, и это очень освежает, так как прошло так много времени с тех пор, как мне приходилось изучать совершенно новый язык с самого начала. Учебное пособие, которое я просмотрел на этот раз, было предоставлено goorm Corp. Goorm в переводе с корейского означает облако, что делает его идеальным названием для компании, которая предоставляет веб-инструмент облачного программирования под названием goormIDE. Он предлагается бесплатно, и тем не менее уроки очень хорошо организованы и имеют собственный редактор, так что студенты могут писать и тестировать свой код на месте.

В этом руководстве мы рассмотрим основные правила синтаксиса, поток управления и каналы — интересную и очень важную концепцию для понимания в распределенных системах.

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

Различия между сопрограммами и горутинами заключаются в следующем: горутины подразумевают параллелизм; сопрограммы обычно не работают. горутины взаимодействуют через каналы; сопрограммы обмениваются данными через операции yield и возобновления.

В конце руководства есть практический проект, над которым мы могли бы работать, применяя то, что мы уже узнали. Речь идет о внедрении простой системы магазинов с пробегом, в которой клиенты могут совершать покупки, а товары доставляются к их двери. Он полностью основан на симуляции: доставка продуктов не происходит, но мы позволяем горутинам, которые обрабатывают доставку, перейти в спящий режим на 30 секунд, чтобы смоделировать процесс.

Вот мой код (оказался очень похожим на эталонное решение):

Я бы изучил другие доступные учебники и настоятельно рекомендовал бы другим сделать то же самое. Спасибо, что прочитали мою статью!