Язык Go — кратко. Часть 7. «Исключения»

В языке Go нет исключений в том виде, к которому мы привыкли в С/С++, Java, Python и т.п. языках. Здесь вообще не принято доводить ситуацию до настолько критической, когда происходит экстренное «выбрасывание» куда-то далеко наверх по дереву вызовов. Путь Go — проверка входящих данных и различных условий. Если можем работать — работаем. Если не можем

Язык Go — кратко. Часть 6. Каналы

Каналы крайне полезная штука и используются для передачи данных между рутинами, а также для синхронизации. Альтернативный способ — локи. Но каналы — идейно правильный. 😉 Каналы могут быть синхронными и асинхронными, двунаправленными и однонаправленными. Синхронный канал приводит к остановке кода при чтении, пока в канал не отправят данные, и при записи, пока из канала не

Язык Go — хинты. 02 — загрузка конфига

Обычная задача — есть конфиг нашей программы в каком-нибудь файле и нам надо его загрузить для последующего использования. Конфиги сейчас можно хранить в чём-нибудь вроде YAML или хотя бы JSON или XML. Допустим, наш в ямле.

В отличие от JSON и XML, для YAML официального пакета пока нет. Поэтому гуглим и находим нужное.

Язык Go — хинты. 01 — замена подстроки

Замена подстроки в строке

Если нам надо заменить множество одних подстрок на множество других

В определённых случаях может оказаться удобнее использовать регулярные выражения. Надо только помнить, что в регулярках go обратные ссылки недоступны, т.е. не получится сделать регулярку вроде такой (\w+)=(‘|»)(.*?)\2 и получить одним махом всё красиво. Поиск и замена при помощи регулярок

Язык Go — кратко. Часть 5. Указатели

В языке Go есть три вида переменных — обычные (значения чисел, строк, массивы), ссылочные (срезы и мапы) и указатели. Кратенько рассмотрим отличия. Обычные переменные — это просто переменные, хранящие конкретное значение. При передаче в функцию для таких переменных создаётся копия. Для строк, правда, иначе — их скорее правильно рассматривать как ссылочные неизменяемые переменные. Ссылочные переменные

Язык Go — кратко. Часть 4. Отложенное выполнение

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

defer file.Close() говорит, что перед выходом из текущей функции — main() — надо вызвать file.Close() Если есть потребность, можно указать безымянную функцию.

Язык Go — кратко. Часть 3. Циклы, условия, ветвление

Циклы Бесконечный

Цикл пока условие выполняется:

Классический цикл со счётчиком:

Язык Go — кратко. Часть 2. Мапы

Классическая хэш-таблица. Самое важное, что надо знать о мапах в go — порядок ключей не гарантируется никак. Вот такое легко может быть:

Учтите, что для работы с мапой она должна быть инициализирована (либо вы явно инициализируете её, либо получите от какой-то функции инициализированную мапу такого же типа).

Apache Spark

Сегодня у нас в препараторской страшный зверь по имени Spark. Установка локальной версии (для «поиграться самое оно, вообще ничего настраивать не обязательно, чтобы уже что-то делать) в макоси: нужна java-машина, так что если у нас нет джавы, то дуем на java.oracle.com, качаем и ставим. На данный момент (декабрь 17-го) имеет смысл брать версию 1.8 —