Создание модуля в GO
Создание и подключение новых модулей локально
Categories:
Создание проекта
Создать директорию с проектом
mkdir greetings
cd greetings
Инициализация
$ go mod init example.com/greetings
go: creating new go.mod: module example.com/greetings
Команда init
создает файл go.mod с основными параметрами модуля:
module example.com/hello
go 1.24.3
Создать файл GO
В редакторе создаю файл: напрмер greetings.go
package greetings
import "fmt"
// Hello returns a greeting for the named person.
func Hello(name string) string {
// Return a greeting that embeds the name in a message.
message := fmt.Sprintf("Hi, %v. Welcome!", name)
return message
}
важно указать в package
название пакета для последующей ссылки на него
Создание основного модуля MAIN
Если проект многомодульный, то повторяем из корня проекта создание нового модуля:
cd ..
mkdir hello
cd hello
Выполняем инициализацию
$ go mod init example.com/hello
go: creating new go.mod: module example.com/hello
Создаем файл основного проекта
имя файла должно быть таким, каким потом будет исполняемый файл, но в файле обязательно должен быть: package main
package main
import (
"fmt"
"example.com/greetings"
)
func main() {
// Get a greeting message and print it.
message := greetings.Hello("Gladys")
fmt.Println(message)
}
Корректируем путь на зависимый модуль
go mod edit -replace example.com/greetings=../greetings
изменит в файле go.mod
на фактический путь зависимого модуля
Получаем файл:
module example.com/hello
go 1.24.3
replace example.com/greetings => ../greetings
Выполняем go mod tidy
$ go mod tidy
go: found example.com/greetings in example.com/greetings v0.0.0-00010101000000-000000000000
для фактической связки только нужных пакетов и проверки go.mod
получаем go.mod
module example.com/hello
go 1.24.3
replace example.com/greetings => ../greetings
require example.com/greetings v0.0.0-00010101000000-000000000000
Запуск проекта
$ go run .
Hi, Gladys. Welcome!