Первый поток 06.02.2020 - 12.03.2020
Курс по Go для начинающих, основанный на книге и её русской версии.
Курс предназначен для тех, кто хочет познакомиться с языком Go. Уровень не важен. Подходит как для тех кто имеет большой опыт и просто хочет познакомиться с языком, так и для тех кто только начинает погружаться в мир программирования.
Открывающие слайды
Слайды урока
Ссылка на домашнее задание
Форма для сдачи домашнего задания
- Приступая к работе
- Ваша первая программа
- Типы
- Переменные
Открывающие слайды
Слайды урока
Ссылка на домашнее задание
Ссылка на домашнее задание со звёздочкой
Форма для сдачи домашнего задания
- Управление потоком
- Массивы, срезы, карты
Слайды урока
Ссылка на домашнее задание
Ссылка на домашнее задание со звёздочкой
Форма для сдачи домашнего задания
- Функции
- Указатели
Слайды урока
Ссылка на домашнее задание
Форма для сдачи домашнего задания
Никита Кондратьев - Tips & Tricks
- Структуры и интерфейсы
- Многопоточность
Никита Кондратьев (Разработчик, юнит SafeDeal, Авито)
- Принимайте интерфейсы, возвращайте структуры.
- В Go отсутствует наследование как в ООП. Используйте интерфейсы.
- Не злоупотребляйте interface{}.
- Не перегружайте интерфейсы.
- Если структура нужна только для того, чтобы реализовать интерфейс, не экспортируйте её.
- Помните, что nill удовлетворяет любому интерфейсу.
- Если нужно изменить данные структуры в методе, определите метод на указателе на структуру.
- При объявлении нового типа на основе существующего, вы не наследуете методы. Для этого нужно использовать "встраивание" типов.
- Держите в голове, что encoding/json может работать только с "публичными" полями структур.
- Учитывайте, что тип и указатель на тип имеют разные наборы методов.
Слайды урока
Ссылка на домашнее задание
Форма для сдачи домашнего задания
Вячеслав Бобик - Tips & Tricks
Сергей Иваненко - Tips & Tricks
- Пакеты и повторное использование кода
- Тестирование
Вячеслав Бобик (Разработчик, юнит Messenger, Авито)
Именование пакетов
- В чем смысл пакета
- Примеры из стандартной библиотеки
- ? Примеры реального проекта(как надо, как НЕ надо)
- Несколько best practices по именованию пакета Организация пакетов
- Подходы в организации пакетов
- Монолит
- Рельсы/Джанга/
- Разбиение по модулям
- Удобный вариант где расскажу про группировку основанную на доменных типах(а так же что это такое) и сервисах.
- Где черпать вдохновение: пример на репозиторий go-package-layout
- Луше маленькая копипаста, чем зависимость.
Сергей Иваненко (Support Systems developer, Avito)
Рассмотрены будут примеры unit тестинга простых ф-ий, файлов, http клиентов, sql запросов. Будет проиллиюстированно как стороннипакеты(facker, mockery, spf13/afero) помогают в этом вопросе, поговорим о внедрении зависимостей и как это помогает при тестировании.
Встроенные инструменты code coverace, benchmark.
План:
- unit testing табличне тесты, просто тесты, приватные функции Примеры File, websocket, httpClient, etc
- вспомогательные инстурменты (facker, mockery)
- TDD
- Слоеная архитектура (циклическая зависимость) +/- различных подходов размещения unit_tests
- code coverace
- code race condition, parrallel
- benchmark
Слайды урока
Форма для сдачи домашнего задания
Иван Осадчий - Tips & Tricks
- Стандартная библиотека
- Дальнейшие шаги
Иван Осадчий (Разрабочтик, юнит Monetization, Авито)
- Идеология: какой задумывалась Go stdlib
- Масштаб проблемы: размер, функциональность
- Как ориентироваться в stdlib?
- Часто используемые пакеты
- Полезные комбо: как пакеты работают вместе
- Чего нет в стандартной библиотеке и почему?
- Как искать пакеты под свои нужды?
- Как переиспользовать наработки коллег?
- Что дальше: куда копать, что важно знать?
Эмиль @litleleprikon
Алик @alikhil
Искандер @quasilyte
Вячеслав Бобик Avito
Никита Кондратьев Avito
Иван Осадчий Avito
Сергей Иваненко Avito
Оля @luzhajka
Раис @rais_khadeev
Кирилл @kirilldemtchenko
Миша @oldtuna