Когда программа на Go становится больше, чем один файл, важно научиться организовывать код. В Go это делается с помощью пакетов и модулей.
🗂 Что такое пакет (package)?
Пакет — это логическая группа файлов Go. Каждый файл начинается с указания пакета:
package main
Файлы с package main содержат функцию main() и запускаются как исполняемая программа. Остальные пакеты — библиотечные, и могут быть переиспользованы.
Например:
package mathutils
func Add(a, b int) int {
    return a + b
}
Чтобы использовать этот пакет в другом месте:
import "myproject/mathutils"
result := mathutils.Add(2, 3)
🧱 Что такое модуль?
Модуль — это коллекция пакетов. Он управляется через файл go.mod, который описывает имя модуля и его зависимости.
Чтобы создать модуль:
go mod init myproject
Это создаст файл go.mod со строкой:
module myproject
Теперь ты можешь импортировать свои пакеты с префиксом myproject/, а также подключать сторонние библиотеки.
📥 Добавление зависимостей
В Go не нужно скачивать зависимости вручную. Достаточно просто импортировать нужный пакет, а затем запустить:
go get github.com/some/package
Это добавит библиотеку в go.mod и скачает её в go.sum (файл контрольных сумм).
Пример:
import "github.com/fatih/color"
go get github.com/fatih/color
После этого ты можешь использовать библиотеку:
color.Red("Ошибка!")
🧹 Полезные команды
go mod init <имя>— инициализирует модульgo get <путь>— добавляет внешнюю зависимостьgo mod tidy— чиститgo.mod, удаляя неиспользуемое и добавляя недостающееgo list -m all— список всех зависимостей
📌 Главное из главы
- Код в Go организуется в пакеты, а весь проект — в модуль.
 go.modуправляет зависимостями проекта.- Сторонние библиотеки можно легко добавить с помощью 
go get. - Команда 
go mod tidyприводит список зависимостей в порядок.