Когда программа на 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 приводит список зависимостей в порядок.