Перейти до змісту

Вчимо Go з досвідом Python

Особисті конспект-нотатки для Python-розробника, який починає вивчати Go. Мета — пояснювати Go його власними категоріями, з короткими порівняннями з Python там, де вони допомагають загострити різницю, а не перетворити пояснення на переклад.

Усі матеріали орієнтовані на актуальний стабільний реліз Go — Go 1.26.4.

Як організовано матеріал

Кожна тема має свою нумеровану теку. Усередині теми конспекти й прикладні файли коду йдуть однією наскрізною нумерацією, тож порядок читання та запуску завжди очевидний.

Екосистема та встановлення

Основи мови

Об'єктноорієнтований Go

  • Методи — отримувачі за значенням і за вказівником, набори методів, підвищення.
  • Інтерфейси — неявне задоволення, поліморфізм, порожній інтерфейс / any.
  • Твердження типу та перемикачі типів — повернення конкретного типу під час виконання.
  • Generics — параметри типу та обмеження.
  • Патерни ООП — інкапсуляція, композиція замість успадкування, поліморфізм.

Пакети та модулі

Конкурентність

  • Горутиниgo, планування, WaitGroup, пастка завершення main.
  • Канали — надсилання/отримання, буферизація, close, range, взаємні блокування.
  • select — мультиплексування, default, таймаути, канали done.
  • СинхронізаціяMutex, Once, атоміки, детектор гонитв.
  • Context — скасування, дедлайни, поширення.
  • Патерни конкурентності — пули робітників, fan-out/fan-in, конвеєри.

Джерела