Представьте строительство дома. Прежде чем возводить стены, нужно заложить фундамент и разметить участок. В разработке программного обеспечения роль такого фундамента играет инициализация проекта: создание структуры директорий и настройка системы управления зависимостями. Без этого шага невозможно двигаться дальше — код не будет компилироваться, а другие разработчики не смогут присоединиться к проекту.
— система управления зависимостями в 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 module | go.mod не создан | Выполнить go mod init github.com/bookshelf/monolith в корне проекта |
package command-line-arguments is not a main package | Нет package main | Убедиться, что файл начинается с package main |
go.mod существует с объявлением модуля github.com/bookshelf/monolithcmd/server/main.go содержит package main и func main()func main() вызывается вывод сообщения через fmt