Мне сложно понять рабочий процесс для создания проекта go, в котором есть локальные пакеты.
Предположим, что я создаю новый проект, используя git для управления версиями, в котором есть файл main.go и файл tools.go, который будет в пакетах utils. Поэтому у меня есть структура каталогов, такая как:
/myproject/
main.go
utils/
tools.go
main.go выглядит следующим образом:
package main
import "./utils"
func main() {
utils.DoSomthing()
}
и tools.go выглядит следующим образом:
package utils;
func DoSomething() {
}
Все работает очень хорошо локально, используя go build и go run. Но это происходит на github, и я хотел бы иметь возможность использовать другие команды go get для его установки. Поэтому локальный импорт пакета должен быть изменен для использования формата "github.com/user/project/utils", который работает, но теперь у меня есть две копии исходного кода, и реальная проблема заключается в том, что копия с git история имеет импорт, который использует загруженную копию. Поэтому, если я работаю над копией с историей git, любые изменения, внесенные в tools.go, останутся незамеченными, потому что они будут использовать загруженную копию.
Так что мне интересно, сможет ли кто-нибудь объяснить правильный способ использования go get, контроль версий и импорт пакетов в рамках одного проекта.