Назад к вопросам
Junior
147
questionbank
Как создавать и импортировать пакеты в Go?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Создание пакета:
- Создайте директорию, имя которой будет соответствовать имени пакета.
- Создайте в этой директории файл с расширением
.go. - В начале файла укажите объявление пакета с ключевым словом
package, за которым следует имя пакета:package mypackage // Имя_пакета - Экспортируемые (доступные из других пакетов) идентификаторы (переменные, функции, типы) должны начинаться с заглавной буквы.
Импорт пакета:
В другом файле .go, где нужно использовать пакет:
- Используйте объявление
importв начале файла, после объявления пакета и до объявления функций:
Путь к пакету зависит от того, где находится пакет относительноimport "путь/к/mypackage" // Путь_к_пакетуGOPATHили модуля Go.
Пример создания и использования:
Допустим, у нас есть структура проекта:
myproject/
├── main.go
└── mypackage/
└── constants.go
File mypackage/constants.go:
package mypackage
// MyConstant экспортируется, так как начинается с заглавной буквы
const MyConstant = "Hello from mypackage"
// myInternalConstant не экспортируется
const myInternalConstant = "This stays here"
File main.go:
package main
import (
"fmt"
"log" // Импорт стандартной библиотеки
"myproject/mypackage" // Импорт нашего пакета
)
func main() {
fmt.Println("Using constant from mypackage:")
fmt.Println(mypackage.MyConstant) // Доступ к экспортируемой константе
// fmt.Println(mypackage.myInternalConstant) // Ошибка компиляции: myInternalConstant не экспортируется
log.Println("Program finished.") // Использование пакета log
}
При использовании модулей Go (рекомендуемый способ), путь к пакету обычно совпадает с путем в вашем репозитории или go.mod. В примере выше, myproject - это имя модуля.
Возможные варианты импорта:
- Стандартный импорт:
import "fmt" - Импорт с алиасом:
import f "fmt"(использование:f.Println(...)) - Точечный импорт (не рекомендуется для общего использования):
import . "fmt"(использование:Println(...)) - Пустой импорт (для выполнения пакета без явного использования его содержимого, например, для регистрации драйверов):
import _ "database/sql/driver"