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