Первый поток 06.02.2020 - 12.03.2020
Go Begginners
Курс по Go для начинающих, основанный на книге и её русской версии.
Для кого курс
Курс предназначен для тех, кто хочет познакомиться с языком Go. Уровень не важен. Подходит как для тех кто имеет большой опыт и просто хочет познакомиться с языком, так и для тех кто только начинает погружаться в мир программирования.
План курса
Материалы
Открывающие слайды
Слайды урока
Ссылка на домашнее задание
Форма для сдачи домашнего задания
Содержание
- Приступая к работе
- Ваша первая программа
- Типы
- Переменные
Материалы
Открывающие слайды
Слайды урока
Ссылка на домашнее задание
Ссылка на домашнее задание со звёздочкой
Форма для сдачи домашнего задания
Содержание
- Управление потоком
- Массивы, срезы, карты
Слайды урока
Ссылка на домашнее задание
Ссылка на домашнее задание со звёздочкой
Форма для сдачи домашнего задания
Содержание
Слайды урока
Ссылка на домашнее задание
Форма для сдачи домашнего задания
Никита Кондратьев - Tips & Tricks
Содержание
- Структуры и интерфейсы
- Многопоточность
Tips & Tricks
Никита Кондратьев (Разработчик, юнит SafeDeal, Авито)
- Принимайте интерфейсы, возвращайте структуры.
- В Go отсутствует наследование как в ООП. Используйте интерфейсы.
- Не злоупотребляйте interface{}.
- Не перегружайте интерфейсы.
- Если структура нужна только для того, чтобы реализовать интерфейс, не экспортируйте её.
- Помните, что nill удовлетворяет любому интерфейсу.
- Если нужно изменить данные структуры в методе, определите метод на указателе на структуру.
- При объявлении нового типа на основе существующего, вы не наследуете методы. Для этого нужно использовать "встраивание" типов.
- Держите в голове, что encoding/json может работать только с "публичными" полями структур.
- Учитывайте, что тип и указатель на тип имеют разные наборы методов.
Слайды урока
Ссылка на домашнее задание
Форма для сдачи домашнего задания
Вячеслав Бобик - Tips & Tricks
Сергей Иваненко - 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
Занятие 6
Содержание
- Стандартная библиотека
- Дальнейшие шаги
Tips & Tricks. Стандартная библиотека.
Иван Осадчий (Разрабочтик, юнит Monetization, Авито)
- Идеология: какой задумывалась Go stdlib
- Масштаб проблемы: размер, функциональность
- Как ориентироваться в stdlib?
- Часто используемые пакеты
- Полезные комбо: как пакеты работают вместе
- Чего нет в стандартной библиотеке и почему?
- Как искать пакеты под свои нужды?
- Как переиспользовать наработки коллег?
- Что дальше: куда копать, что важно знать?
Преподаватели
Эмиль @litleleprikon
Алик @alikhil
Искандер @quasilyte
Tips & Tricks
Вячеслав Бобик Avito
Никита Кондратьев Avito
Иван Осадчий Avito
Сергей Иваненко Avito
Организация
Оля @luzhajka
Раис @rais_khadeev
Кирилл @kirilldemtchenko
Миша @oldtuna