Если нужен пример как использовать локально, то можете посмотреть пример в репозиторие
go-openvz-api. Это первая фиксация кода (commit), до использования go modules.
Далее в истории фиксаций впоследствии перешел на go modules.
main.go
package main
import "./package1"
...
package1/file1.go
package package1
import (
"fmt"
)
...
package1/file2.go
package package1
...
Если изначально применять схему именования пакета как для хранения на удаленных хранилищах, то можно сделать так:
go mod init example.org/user/mypackage
Это означает, что префикс при импорте в пакетах всегда будет начинаться с
example.org/user/mypackage
. Все что в поддиректориях проекта, при импорте должно быть указано как
example.org/user/mypackage/название_подпапки
(например,
example.org/user/mypackage/package1
).
И важные дополнения, без которых ничего не будет работать:
1. Проект должен располагаться вне пути GOPATH.
2. Отредактировать go.mod, добавив строку
replace example.org/user/mypackage => ./
Эта инструкция укажет на локальную папку, находящуюся по тому же пути, где и корень проекта. Таким образом, go не будет искать на хостинге http: //example.org/user/mypackage
Это сработает для Linux, где пути указаны косой чертой (точка в начале - текущая директория). В Windows используется обратная косая черта. Как в Go работают с путями в Windows - не знаю.
То есть можно работать локально и никуда не закачивать код, будет все работать локально.
И когда все же закачаете код на хранилище, поменяйте везде
example.org/user/mypackage
на истинное расположение репозитория, а строку с
replace
удалите с go.mod, иначе будет искать код только локально.
Замечания:
1. Не исключено, что название Modules.pack проблематично из-за точки внутри.
2.
. "Modules.pack/mod1"
так неправильно. Точку вначале убрать
Можно так:
"./Modules.pack/mod1"
или так:
"example.org/user/Modules.pack/mod1"
или так:
"qqw example.org/user/Modules.pack/mod1" // а в самом коде ниже писать qqw вместо mod1
Вместо
go get
использую
go mod tidy
.
Сам с Go модулями не так давно работаю, но думаю что так надо.