Тестирование в Go
На этом открытом уроке:
- Рассмотрели тестирование программ на Go;
 - Поговорили про понятие табличных тестов;
 - Затронули тему пакета testing и библиотеки testify.
 
Дженерики в Go
Разобрали, что такое «дженерики», как они нам могут помочь в ежедневных задачах, а также как они влияют на производительность и чем они лучше/хуже обычных интерфейсов.
Горутины и каналы
На уроке начали работу с горутинами:
- Узнали, что такое горутины и как их запускать;
 - Сравнили буферизированные и небуферизованные каналы;
 - Поговорили про использование каналов для передачи данных и синхронизации;
 - А также затронули оператор select и таймеры в Go.
 
В итоге научились реализовывать передачу данных между горутинами с помощью канала.
Примитивы синхронизации
На этом занятии:
- Поговорили про группу ожидания (sync.WaitGroup);
 - Затронули гарантированно одноразовое выполнение (sync.Once);
 - Обсудили «простой» мьютекс (sync.Mutex) и детектор гонок (race detector).
 
В результате занятия научились пользоваться частью механизмов синхронизации в Go и бороться с «гонками» в Go.
Структуры языка Golang
Рассмотрели следующие понятия:
- процесс определения структур;
 - инкапсуляция полей структуры;
 - определение методов структуры.
 
Поговорили про вложенные и анонимные структуры, а также про структурные тэги и их использование в контексте JSON, XML и СУБД. В итоге научились создавать пользовательские типы данных и комбинировать их между собой.
Функции и методы в Golang
Поговорили про области видимости. Рассмотрели различные функции: именованные, анонимные, с переменным числом аргументов и пр. А также попробовали затронуть понятие замыкания и методы.