Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

ShDA009/Go_Learning

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐹 Go Learning — Интерактивный курс по Go

Локальное веб-приложение для изучения языка Go с теорией, примерами кода и практическими заданиями с автопроверкой.

Go License

✨ Возможности

  • 📚 124 урока — от базового Go до продвинутых backend-тем
  • 🎯 586 практических заданий с автоматической проверкой
  • 📊 Отслеживание прогресса — очки и статистика
  • 📝 Личные заметки к каждому уроку
  • 🔍 Полнотекстовый поиск по всем материалам
  • 💻 Встроенный редактор кода с подсветкой синтаксиса
  • 🧩 Раздел «Проекты» — 2 capstone-проекта с развёрнутым ТЗ и ссылками на уроки

🚀 Быстрый старт

Требования

  • Go 1.22 или выше

Установка и запуск

# Клонируйте репозиторий
git clone https://github.com/your-username/go-learning.git
cd go-learning

# Установите зависимости
go mod download

# Запустите сервер
go run ./cmd/server --db ./data.db --addr :8080

Откройте http://localhost:8080 в браузере.

Примечание: База данных data.db уже содержит все уроки и задания — дополнительная настройка не требуется!

📖 Содержание курса

Раздел 1: Язык Go (92 урока)

Глава Темы
Введение Что такое Go, первая программа
Основы языка Переменные, типы, операторы, циклы, условия
Функции Параметры, возврат значений, замыкания, рекурсия
Указатели Работа с адресами памяти
Производные типы Структуры, методы, срезы, карты
Пакеты и модули Организация кода, зависимости
Интерфейсы Полиморфизм в Go
Горутины и каналы Параллельное программирование
Обработка ошибок error, panic, recover, defer
Файлы и I/O Чтение, запись, потоки
Сеть TCP, HTTP клиент/сервер
Базы данных SQL, MySQL, PostgreSQL, SQLite, MongoDB
Тестирование Unit/Integration/HTTP тесты, бенчмарки, покрытие
Generics Constraints, структуры данных, паттерны
Context Timeouts, отмена, values, best practices

Раздел 2: Веб-разработка на Go (11 уроков)

Глава Темы
Основы веб HTTP сервер, маршрутизация, gorilla/mux
Шаблоны html/template, синтаксис
Работа с БД CRUD операции через веб-интерфейс

Раздел 3: Продвинутое программирование Go (21 урок)

Глава Темы
Архитектура Clean Architecture
Gin Framework REST API, middleware, валидация
JWT access/refresh, безопасность
GORM модели, связи, preload
Docker multi-stage, compose, best practices
CI/CD GitHub Actions, lint, -race
gRPC proto, streaming, interceptors
Observability Prometheus метрики
Производительность pprof, trace, нагрузочное тестирование
Логирование log/slog, request_id, корреляция
Tracing OpenTelemetry (Gin/gRPC)
Production ready таймауты, health/readiness, graceful shutdown
Redis cache-aside, TTL, stampede
Postgres/SQL миграции, пул, транзакции, EXPLAIN
gRPC Production TLS/mTLS, grpc-gateway + OpenAPI

Раздел 4: Проекты (2 capstone)

Доступны на странице: /projects
Тексты ТЗ хранятся в lessons_mdx/Проекты/*.md (этот каталог не импортируется как курс).

🏗 Структура проекта

go-learning/
├── cmd/
│   ├── server/       # Веб-сервер
│   ├── ingest/       # CLI для импорта контента
│   └── purge_demo/   # CLI для удаления демо-уроков из БД
├── internal/
│   ├── db/           # SQLite, миграции
│   ├── content/      # Модели и репозиторий уроков
│   ├── ingest/       # Парсер markdown
│   ├── practice/     # Проверка кода (go run/test)
│   ├── progress/     # Прогресс пользователя
│   └── web/          # HTTP handlers, шаблоны, статика
├── lessons_ai/       # Исходные markdown файлы уроков
├── lessons_mdx/      # Основной контент уроков в MDX (для ingest --mdx)
│   └── Проекты/      # ТЗ capstone-проектов (Markdown)
├── data.db           # SQLite база с уроками и заданиями
├── project_specs.go  # go:embed ТЗ из lessons_mdx/Проекты для страницы /projects
└── README.md

🔧 API

Метод Путь Описание
GET / Главная (список уроков)
GET /lessons/{slug} Страница урока
GET /projects Проекты (capstone ТЗ)
GET /search?q= Поиск
POST /api/progress/lesson/{id} Обновить прогресс
POST /api/notes/lesson/{id} Сохранить заметку
POST /api/run Выполнить Go-код
POST /api/check Проверить решение задачи

🛠 Разработка

Импорт/обновление уроков

# Импортировать все уроки из lessons_mdx (рекомендуется)
go run ./cmd/ingest --db ./data.db --dir ./lessons_mdx --mdx

# Импортировать демо-данные (для разработки)
go run ./cmd/ingest --db ./data.db --demo

# Удалить демо-уроки из базы (если случайно добавили)
go run ./cmd/purge_demo --db ./data.db

Сброс базы данных

# Linux/macOS
rm -f data.db

# Windows (PowerShell)
Remove-Item -Force .\\data.db

# Пересоздать базу из lessons_mdx
go run ./cmd/ingest --db ./data.db --dir ./lessons_mdx --mdx

📋 Формат заданий

Каждое задание включает:

  • Описание — что нужно сделать (1-3 предложения)
  • Ожидаемый результат — точный вывод программы
  • Критерии приёмки — что проверяется (2-5 пунктов)
  • Подсказки — без готового решения (макс. 2)
  • Стартовый код — шаблон для решения

Проверка выполняется автоматически:

  1. Компиляция кода
  2. Проверка обязательных паттернов
  3. Сравнение вывода с ожидаемым

📄 Лицензия

MIT — свободно для личного и коммерческого использования.


Сделано с ❤️ для изучения Go

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • MDX 87.6%
  • Go 9.6%
  • CSS 1.2%
  • Other 1.6%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.