Skip to content

GDG-Cloud-Innopolis/Go-begginners

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gopher

Первый поток 06.02.2020 - 12.03.2020

Go Begginners

Курс по Go для начинающих, основанный на книге и её русской версии.

Для кого курс

Курс предназначен для тех, кто хочет познакомиться с языком Go. Уровень не важен. Подходит как для тех кто имеет большой опыт и просто хочет познакомиться с языком, так и для тех кто только начинает погружаться в мир программирования.

План курса

Материалы

Открывающие слайды
Слайды урока
Ссылка на домашнее задание
Форма для сдачи домашнего задания

Содержание

  • Приступая к работе
  • Ваша первая программа
  • Типы
  • Переменные

Материалы

Открывающие слайды
Слайды урока
Ссылка на домашнее задание
Ссылка на домашнее задание со звёздочкой
Форма для сдачи домашнего задания

Содержание

  • Управление потоком
  • Массивы, срезы, карты

Слайды урока
Ссылка на домашнее задание
Ссылка на домашнее задание со звёздочкой
Форма для сдачи домашнего задания

Содержание

  • Функции
  • Указатели

Слайды урока
Ссылка на домашнее задание
Форма для сдачи домашнего задания
Никита Кондратьев - Tips & Tricks

Содержание

  • Структуры и интерфейсы
  • Многопоточность

Tips & Tricks

Никита Кондратьев (Разработчик, юнит SafeDeal, Авито)

  1. Принимайте интерфейсы, возвращайте структуры.
  2. В Go отсутствует наследование как в ООП. Используйте интерфейсы.
  3. Не злоупотребляйте interface{}.
  4. Не перегружайте интерфейсы.
  5. Если структура нужна только для того, чтобы реализовать интерфейс, не экспортируйте её.
  6. Помните, что nill удовлетворяет любому интерфейсу.
  7. Если нужно изменить данные структуры в методе, определите метод на указателе на структуру.
  8. При объявлении нового типа на основе существующего, вы не наследуете методы. Для этого нужно использовать "встраивание" типов.
  9. Держите в голове, что encoding/json может работать только с "публичными" полями структур.
  10. Учитывайте, что тип и указатель на тип имеют разные наборы методов.

Слайды урока
Ссылка на домашнее задание
Форма для сдачи домашнего задания
Вячеслав Бобик - 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

Слайды урока
Форма для сдачи домашнего задания
Иван Осадчий - Tips & Tricks

Содержание

  • Стандартная библиотека
  • Дальнейшие шаги

Tips & Tricks. Стандартная библиотека.

Иван Осадчий (Разрабочтик, юнит Monetization, Авито)

  • Идеология: какой задумывалась Go stdlib
  • Масштаб проблемы: размер, функциональность
  • Как ориентироваться в stdlib?
  • Часто используемые пакеты
  • Полезные комбо: как пакеты работают вместе
  • Чего нет в стандартной библиотеке и почему?
  • Как искать пакеты под свои нужды?
  • Как переиспользовать наработки коллег?
  • Что дальше: куда копать, что важно знать?

Преподаватели

Эмиль @litleleprikon
Алик @alikhil
Искандер @quasilyte

Tips & Tricks

Вячеслав Бобик Avito
Никита Кондратьев Avito
Иван Осадчий Avito
Сергей Иваненко Avito

Организация

Оля @luzhajka
Раис @rais_khadeev
Кирилл @kirilldemtchenko
Миша @oldtuna