Я новичок, чтобы пойти и работать над примером кода, который я хочу локализовать.Как импортировать локальные пакеты в go?
В первоначальном заявлении main.go
импорта было:
import (
"log"
"net/http"
"github.com/foo/bar/myapp/common"
"github.com/foo/bar/myapp/routers"
)
Теперь я common
и routers
пакет в /home/me/go/src/myapp
Так я преобразовал оператор импорта в:
import (
"log"
"net/http"
"./common"
"./routers"
)
Но когда Я запускаю go install myapp
Я получаю эти ошибки:
can't load package: /home/me/go/src/myapp/main.go:7:3: local import "./common" in non-local package
Кроме того, когда я использую common
и routers
вместо ./common
и ./routers
в заявлении импорта, я получаю:
myapp/main.go:7:3: cannot find package "common" in any of:
/usr/local/go/src/common (from $GOROOT)
/home/me/go/src/common (from $GOPATH)
myapp/main.go:8:2: cannot find package "routers" in any of:
/usr/local/go/src/routers (from $GOROOT)
/home/me/go/src/routers (from $GOPATH)
Как я могу это исправить?
Все импорт «локальный», независимо от пути импорта. См. [«Как написать код перехода»] (https://golang.org/doc/code.html) для подробного объяснения. – JimB
@JimB отложив в сторону философские дебаты, я обеспокоен тем, как решить проблему, упомянутую выше. – Karlom
Я не пытаюсь сделать философское утверждение, я буквально говорю * все * импорт происходит в вашей локальной файловой системе; нет никакой разницы, происходят ли они из удаленного репо или нет. Не пытайтесь использовать относительные пути (они работают иногда, но не рекомендуется), и перейдите к документу «Как писать код», в частности раздел [Организация кода]] (https://golang.org/ док/code.html # Organization). – JimB