Пакет в Go — это способ организации и повторного использования кода. Это:
Каждый Go-файл начинается с объявления пакета:
package main // Объявление принадлежности к пакету
main()
, компилируются в бинарникПример структуры:
myproject/
├── main.go
└── utils/
└── strings.go
Содержимое strings.go:
package utils // Все файлы в директории utils должны иметь это объявление
// UpperCase экспортируемая функция (с большой буквы)
func UpperCase(s string) string {
return strings.ToUpper(s)
}
Импорт осуществляется через ключевое слово import
:
import (
"fmt" // Стандартный пакет
"myproject/utils" // Локальный пакет (относительно $GOPATH или go.mod)
"github.com/lib/pq" // Внешняя зависимость
)
import (
f "fmt"
m "math"
)
import . "fmt" // Теперь можно вызывать Println() напрямую
_
) — когда нужны только side-effects (init-функции):import _ "database/sql/driver"
UpperCase
)privateFunc
)Функция init()
выполняется при импорте пакета:
package db
func init() {
// Инициализация соединения и т.д.
}
go.mod
в корне проекта:go mod init github.com/yourname/project
log
, http
, utils
)package
)пакеты — фундаментальная концепция Go для организации кода. Они обеспечивают модульность, повторное использование и четкое разделение ответственности. Правильное использование пакетов критически важно для создания поддерживаемых Go-приложений.