Освойте программирование на языке Go
Практическое введение для начинающих в язык программирования Go. Курс состоит из небольших, легко усваиваемых уроков с темой исследования космоса, охватывающих императивное программирование, типы, функции, методы, коллекции, состояние и параллелизм.
Уроки
Обзор курса
📚 Краткое содержание
Начинающий, практико-ориентированный вводный курс по языку программирования Go. Курс структурирован в виде небольших, управляемых уроков с темой исследования космоса и охватывает императивное программирование, типы, функции, методы, коллекции, состояние и параллелизм.
Откройте для себя радость программирования на Go через короткие уроки и семь финальных проектов, посвящённых освоению космоса.
Автор: Натан Йонгман, Роджер Пеппе
Благодарности: Дженнифер Став, Марина Михайлович, Мэттью Мёркс, Джоэл Котарски, Александар Драгосавльевич, Рене Френч, Ольга Шалахина, Эрик Зелая, Эйприл Милн, Моника Камсваг.
🎯 Цели обучения
- Определить язык программирования Go и его основные области применения.
- Объяснить роль компилятора Go и его преимущества перед интерпретаторами.
- Освоить использование среды выполнения Go для написания, компиляции и запуска кода.
- Правильно структурировать код на Go, используя обязательный стиль «одной правильной фигурной скобки», чтобы избежать синтаксических ошибок.
- Управлять данными с помощью различных способов объявления переменных и операторов присваивания с арифметикой.
- Генерировать псевдослучайные числа и реализовывать условную логику с использованием ветвлений и логических операторов.
- Объявлять и форматировать переменные с плавающей точкой с помощью
float32иfloat64с заданной шириной и точностью. - Выявлять и устранять ошибки, вызванные неточностями при работе с числами с плавающей точкой и переполнением целых чисел.
- Использовать пакет
bigи неопределённые константы для работы с числами, превышающими стандартные размеры битов. - Определять и вызывать функции с параметрами, аргументами и синтаксисом переменного числа аргументов.
🔹 Урок 1: Взлет в орбиту
Обзор: В этом уроке представлен язык программирования Go — современный язык для облачных вычислений. Учащиеся узнают ключевое различие между компилируемым характером Go и интерпретируемыми языками, как использовать среду выполнения Go для немедленного экспериментирования, а также основную структуру программы на Go, включая пакеты и функцию main.
Результаты обучения:
- Определить язык программирования Go и его основные области применения.
- Объяснить роль компилятора Go и его преимущества перед интерпретаторами.
- Освоить работу со средой выполнения Go для написания, компиляции и запуска кода.
🔹 Урок 2: Логика управления миссией
Обзор: В этом уроке рассматриваются основные строительные блоки программирования на Go, с акцентом на структурирование кода и контроль его выполнения. Учащиеся узнают о стиле «одной правильной фигурной скобки» и точках входа в программу, продвигаются через сокращённые способы объявления переменных и математические операторы, и завершают урок логикой принятия решений с использованием булевых значений, сравнений и ветвлений.
Результаты обучения:
- Правильно структурировать код на Go, используя обязательный стиль «одной правильной фигурной скобки», чтобы избежать синтаксических ошибок.
- Управлять данными с помощью различных способов объявления переменных и операторов присваивания с арифметикой.
- Генерировать псевдослучайные числа и реализовывать условную логику с использованием ветвлений и логических операторов.
🔹 Урок 3: Физика космических данных
Обзор: В этом уроке рассматривается, как Go обрабатывает числовые данные — от дробной точности чисел с плавающей точкой до огромных масштабов, необходимых для астрономических расстояний. Учащиеся научатся управлять ограничениями компьютерной памяти, включая неточности при работе с числами с плавающей точкой и переполнение целых чисел, одновременно осваивая явное преобразование типов и использование пакета big для работы с «необычными» размерами чисел.
Результаты обучения:
- Объявлять и форматировать переменные с плавающей точкой с использованием
float32иfloat64с заданной шириной и точностью. - Выявлять и устранять ошибки, вызванные неточностями при работе с числами с плавающей точкой и переполнением целых чисел.
- Использовать пакет
bigи неопределённые константы для работы с числами, превышающими стандартные размеры битов.
🔹 Урок 4: Создание модульных модулей
Обзор: В этом уроке рассматриваются основные строительные блоки программ на Go: функции, пользовательские типы и методы. Учащиеся узнают, как инкапсулировать логику для повторного использования, определять новые типы с конкретным поведением, а также использовать функции первого класса — включая замыкания и анонимные функции — для создания гибкого и модульного кода. Урок завершается практическим финальным проектом по созданию таблицы перевода температур.
Результаты обучения:
- Определять и вызывать функции с параметрами, аргументами и синтаксисом переменного числа аргументов.
- Различать экспортированные и неэкспортированные идентификаторы с использованием соглашений об именовании в Go.
- Создавать пользовательские типы и привязывать к ним поведение с помощью методов и получателей.
🔹 Урок 5: Загрузка грузового отсека
Обзор: В этом уроке рассматриваются основные структуры данных в Go для управления коллекциями информации. От фиксированных массивов и их поведения копирования в памяти до динамических срезов, которые служат гибкими окнами в данные, и, наконец, до карт для эффективного доступа по ключу. Урок завершается проектом «Игра жизни», который демонстрирует, как использовать многомерные срезы для моделирования сложных систем.
Результаты обучения:
- Объявлять, инициализировать и перебирать фиксированные массивы и многомерные сетки.
- Управлять срезами с помощью диапазонов индексов и динамического роста с помощью функции
append. - Эффективно управлять памятью, различая длину и вместимость, а также предварительно выделять коллекции с помощью
make.
🔹 Урок 6: Организация марсианских жилищ
Обзор: В этом уроке представлен подход Go к организации сложных данных и поведения. Учащиеся узнают, как группировать разнородные типы данных в структуры (structs), инициализировать их с помощью составных литералов и управлять их поведением с помощью методов и функций-конструкторов. Также рассматривается уникальная философия проектирования Go: предпочтение композиции над наследованием и использование неявных интерфейсов для достижения полиморфизма.
Результаты обучения:
- Определять, инициализировать и копировать структуры для управления сложными данными координат на Марсе и данных о марсоходах.
- Кодировать структуры Go в формате JSON с помощью тегов структур для настраиваемого обмена данными.
- Реализовывать методы, функции-конструкторы и внедрение структур для создания повторно используемого и организованного кода.
🔹 Урок 7: Навигация по землянке
Обзор: В этом уроке исследуется мощность и безопасность косвенной адресации в Go, с акцентом на то, как указатели позволяют эффективно изменять данные и управлять памятью. Предлагается прочная основа для защитного программирования: обучение тому, как работать с nil, управлять ресурсами с помощью defer и применять типовые шаблоны обработки ошибок — завершаясь применением этих принципов к движку проверки судоку.
Результаты обучения:
- Использовать символы амперсанда (
&) и звёздочки (*) для управления адресами памяти и разыменования значений. - Реализовывать параметры и получатели-указатели для возможности изменения данных внутри функций и методов.
- Безопасно работать с
nilзначениями в срезах, картах и интерфейсах, не вызывая сбоев во время выполнения.
🔹 Урок 8: Многомарсоходная связь
Обзор: В этом уроке представлены основные примитивы конкурентности в Go: горутины и каналы. Изучается, как запускать задачи независимо, безопасно общаться между ними и управлять совместным состоянием с помощью мьютексов для предотвращения гонок. Урок завершается финальным проектом, моделирующим поведение марсоходов, перемещающихся по сетке и сообщающих о своих находках.
Результаты обучения:
- Запускать и управлять параллельными задачами с помощью ключевого слова
go. - Реализовывать безопасную коммуникацию между горутинами с помощью каналов и оператора
select. - Создавать потоки данных и управлять жизненным циклом горутин путём закрытия каналов.