Конкурентность и параллелизм в Golang. Горутины.

Конкурентность в Golang Прежде чем приступать к раскрытию темы нашей статьи, неплохо бы прояснить, что же такое параллелизм и конкурентность и в чём разница между ними. Golang — это тот язык, который делает возможной работу приложения в условиях конкурентности и параллелизма. Давайте разберёмся, чем они друг от друга отличаются. Что такое конкурентность? Конкурентность ПОДРОБНЕЕ

Обработка ошибок в Golang с помощью Panic, Defer и Recover

В Golang предусмотрен простой интерфейс для ошибок. Любая ошибка, возвращаемая в Golang, следует такому определению интерфейса: type error interface { Error() string } Создание сообщения об ошибке в Golang Простое сообщение об ошибке в Golang создаётся с помощью такого синтаксиса: package main import ( «errors» «fmt» ) func calculateArea(radius int) (int, ПОДРОБНЕЕ

Ловушка для горутины

Горутина — это эффективный и легковесный механизм многопоточного выполнения, популярный среди разработчиков Go. С помощью семантики горутин программисты добиваются эффективного выполнения параллельных процессов в программе. Впрочем, следует помнить о подводных камнях, чтобы избежать незапланированных побочных эффектов. Программа Логика программы проста: есть набор функций определенного типа, который нужно перебрать и выполнить. Каждая из ПОДРОБНЕЕ

Примитивы синхронизации в Go

Изучаем Mutex, WaitGroup и Once с примерами В данной статье кратко рассмотрим некоторые конструкции низкоуровневой синхронизации, которые наряду с горутинами и каналами предлагает нам один из самых популярных стандартных библиотечных пакетов Go, а именно пакет sync. Таких конструкций очень много, а мы изучим лишь три из них, зато с примерами: ПОДРОБНЕЕ

Что такого в языке Go?

Сегодня я хочу поговорить не о чем ином как о Golang. Как и в случае с Node.js, термин Golang встречается мне несколько раз в день. “Найди людей, у которых есть любой опыт работы с Golang” — очень распространенная фраза. Почему Golang так востребован? Почему разработчики на Golang зарабатывают больше других и почему ПОДРОБНЕЕ

Рабочая очередь в Go с RabbitMQ

Мы создадим систему рабочих очередей, в которой будут появляться новые задания. Обработчики (workers) будут следить за очередью и выполнять работу по мере поступления. Система рабочих очередей идеально подходит для фоновых заданий, которые длятся дольше, чем обычный http-запрос. Один из примеров рабочих очередей: приложение обрабатывает загруженные пользователем фото, создает несколько версий ПОДРОБНЕЕ

Как реализовать древовидную сортировку в стандартной библиотеке Go

Двоичная куча Итак, двоичная куча — это: Контейнер, предоставляющий свой максимальный элемент за время O(1), добавляющий элемент за O(log n) и удаляющий максимальный элемент за O(log n). Неполное бинарное дерево, каждый узел которого больше или равен своим дочерним элементам. На это свойство кучи я буду ссылаться на протяжении всей статьи. Эти свойства ПОДРОБНЕЕ

Топ-10 самых распространенных ошибок в проектах Go. Часть 2

Предыдущая часть: Часть 1, Часть 2 Инициализация среза Иногда конечная длина среза бывает известна. Допустим, нужно преобразовать срез Foo в срез Bar, что означает, что они среза будут иметь одинаковую длину. Часто встречаются срезы, инициализированные следующим образом: var bars []Bar bars := make([]Bar, 0) Срез не является магической структурой. Он ПОДРОБНЕЕ

Разбираемся с компилятором Go

В статье речь идёт о Go 1.13 Компилятор Go занимает важное место в экосистеме Go. Компиляция — необходимый этап создания исполняемого двоичного кода. Компилятор проходит долгий путь: его пишут на C, переносят на Go и постоянно оптимизируют. Фазы компиляции Компилирование Go состоит из четырёх фаз, которые можно объединить в два этапа: На ПОДРОБНЕЕ

Как я встраивал ресурсы в Go %

Во время стажировки в WSO2, я работал над проектом разработки процессов непрерывной интеграции и развёртывания ПО для WSO2 API Manager. Работа велась в основном на Golang. При разработке инструментов нам хотелось пройти фазу инициализации проекта средствами интерфейса командной строки. А это требует немалых работ по созданию кода. Вначале всё было ПОДРОБНЕЕ