У меня возникли проблемы с пониманием рабочего процесса создания проекта go с локальными пакетами.
Скажем, я создаю новый проект, используя git для управления версиями, в котором есть файл main.go и файл tools.go, которые будут в package 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и беги. Но это размещается на github, и я хотел бы, чтобы другие использовали команду go getдля его установки. Таким образом, импорт локального пакета необходимо изменить, чтобы использовать формат «github.com/user/project/utils», который работает, за исключением того, что теперь у меня есть две копии исходного кода, и реальная проблема заключается в том, что копия с историей git имеет импорт, который использует загруженную копию. Поэтому, если я работаю над копией с историей git, любые изменения, внесенные в tools.go, останутся незамеченными, потому что будет использоваться загруженная копия.
Поэтому мне интересно, может ли кто-нибудь объяснить правильный способ использования go get, контроля версий и импорта пакетов в рамках одного проекта.