Тестирование в Go

На этом открытом уроке:

  • Рассмотрели тестирование программ на Go;
  • Поговорили про понятие табличных тестов;
  • Затронули тему пакета testing и библиотеки testify.

Дженерики в Go

Разобрали, что такое «дженерики», как они нам могут помочь в ежедневных задачах, а также как они влияют на производительность и чем они лучше/хуже обычных интерфейсов.


Горутины и каналы

На уроке начали работу с горутинами:

  • Узнали, что такое горутины и как их запускать;
  • Сравнили буферизированные и небуферизованные каналы;
  • Поговорили про использование каналов для передачи данных и синхронизации;
  • А также затронули оператор select и таймеры в Go.

В итоге научились реализовывать передачу данных между горутинами с помощью канала.


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

На этом занятии:

  • Поговорили про группу ожидания (sync.WaitGroup);
  • Затронули гарантированно одноразовое выполнение (sync.Once);
  • Обсудили «простой» мьютекс (sync.Mutex) и детектор гонок (race detector).

В результате занятия научились пользоваться частью механизмов синхронизации в Go и бороться с «гонками» в Go.


Структуры языка Golang

Рассмотрели следующие понятия:

  • процесс определения структур;
  • инкапсуляция полей структуры;
  • определение методов структуры.

Поговорили про вложенные и анонимные структуры, а также про структурные тэги и их использование в контексте JSON, XML и СУБД. В итоге научились создавать пользовательские типы данных и комбинировать их между собой.


Функции и методы в Golang

Поговорили про области видимости. Рассмотрели различные функции: именованные, анонимные, с переменным числом аргументов и пр. А также попробовали затронуть понятие замыкания и методы.