/
Praxis/

Инициализация проекта

Представьте строительство дома. Прежде чем возводить стены, нужно заложить фундамент и разметить участок. В разработке программного обеспечения роль такого фундамента играет инициализация проекта: создание структуры директорий и настройка системы управления зависимостями. Без этого шага невозможно двигаться дальше — код не будет компилироваться, а другие разработчики не смогут присоединиться к проекту.

Ключевая концепция: Go Modules

— система управления зависимостями в Go, которая появилась в версии 1.11 и стала стандартом с версии 1.16. Файл в корне проекта описывает имя модуля, версию Go и список внешних зависимостей. Это как паспорт проекта: любой разработчик может взять код, выполнить go mod download и получить точно такие же версии библиотек.

Зачем это нужно именно сейчас? Без go.mod Go не знает, как разрешать импорты внутри проекта. Даже простейший код с несколькими пакетами не скомпилируется без инициализированного модуля.

Цели этапа

Зачем: Заложить минимальную структуру проекта — модуль, точку входа и первый запускаемый файл.

Директория проекта:

Создать корневую директорию bookshelf/ для всего кода монолита.

Go-модуль:

Инициализировать Go-модуль с именем github.com/bookshelf/monolith — это позволит импортировать внутренние пакеты и добавлять внешние зависимости.

Точка входа:

Создать файл cmd/server/main.go с функцией main(), которая выводит приветственное сообщение. Директория cmd/ — стандартное место для исполняемых файлов в Go-проектах.

Пример работы

$ cd bookshelf $ go run ./cmd/server Hello, Bookshelf!

Частые ошибки

ОшибкаПричинаРешение
go: cannot find main modulego.mod не созданВыполнить go mod init github.com/bookshelf/monolith в корне проекта
package command-line-arguments is not a main packageНет package mainУбедиться, что файл начинается с package main

Полезные материалы

  • Go Modules — работа с модулями
  • How to Write Go Code — организация Go-кода
  • Go by Example: Hello World — первая программа
  • Модули в Go — на русском

Критерии

не проверялось
  • Файл go.mod существует с объявлением модуля github.com/bookshelf/monolith
  • Файл cmd/server/main.go содержит package main и func main()
  • В func main() вызывается вывод сообщения через fmt
Войдите в аккаунт, чтобы начать проект
Запустите первую проверку