Разбор двух ключевых концепций языка Go — packages и modules. В этом уроке мы изучим, как организуется код внутри проекта, что такое модуль, как управлять зависимостями и как правильно структурировать Go-приложение.
В этом уроке ты узнаешь, как в Go устроены packages и modules, зачем они нужны и как работать с ними в реальных проектах.
В Go package - это основной способ организации кода. Каждый файл Go начинается с указания пакета:
package mypackage
Обычно одна директория = один пакет.
Пакет должен выполнять одну конкретную задачу, например: - разбор аргументов, - обработка HTTP-запросов, - логирование, - работа с графикой.
Импорт выглядит так:
import "fmt"
Несколько импортов:
import (
"fmt"
"net/http"
)
import server "net/http"
Теперь можно вызывать так:
server.ListenAndServe()
import . "fmt"
Теперь можно писать:
Println("Hello")
Использовать dot-import рекомендовано только для тестов или маленьких примеров.
Module - это набор пакетов, объединённых в один проект и
управляемых через Go CLI.
Модуль определяется файлом go.mod в корне проекта.
Пример:
module github.com/user/project
go 1.22
require (
github.com/sirupsen/logrus v1.9.3
)
Файл go.mod содержит: - имя модуля, - версию Go, - список
зависимостей, - replace-директивы.
Создать новый модуль:
go mod init myproject
Добавить зависимость:
go get github.com/gin-gonic/gin
Обновить зависимости:
go get -u
Очистить неиспользуемые зависимости:
go mod tidy
Go может скачивать зависимости из: - GitHub, - Go Proxy (registry), -
частных Git-репозиториев, - локальных директорий (через replace).
go.mod.