Ответ 1
Любое количество файлов в каталоге - это один пакет; символы, объявленные в одном файле, доступны для других без каких-либо import
или квалификаторов. Все файлы нуждаются в одном и том же объявлении package foo
вверху (или вы получите сообщение об ошибке из go build
).
Вам нужно, чтобы GOPATH
установлен в каталог, в котором находятся ваши pkg
, src
и bin
. Это всего лишь вопрос предпочтения, но для общего использования у вас есть одно рабочее пространство для всех ваших приложений (иногда $HOME
), а не одно приложение.
Обычно путь Github будет github.com/username/reponame
(а не только github.com/xxxx
). Поэтому, если вы хотите иметь main
и другой пакет, вы можете в конечном итоге сделать что-то в workspace/src
как
github.com/
username/
reponame/
main.go // package main, importing "github.com/username/reponame/b"
b/
b.go // package b
Обратите внимание, что вы всегда импортируете с полным пути github.com/...
: относительный импорт не разрешен в рабочей области. Если вы устали от ввода путей, используйте goimports
. Если вы получали путем с go run
, это время, чтобы перейти к go build
: run
сделки плохо с множественным файлом main
и я не удосужился проверить, но слышал (от Dave Чейни здесь) go run
не перестраивают грязные зависимости.
Похоже, вы, по крайней мере, пытались правильно настроить GOPATH, поэтому, если вы все еще застряли, возможно, укажите, как вы устанавливаете переменную среды (команду и т.д.) И какую команду вы выполняете и какая ошибка. Ниже приведены инструкции о том, как установить его (и сделать постоянный параметр) в Linux/UNIX, и вот совет команды Go по настройке рабочей области. Возможно, ни одна из них не помогает, но взгляните и, по крайней мере, укажите, какая часть вас смущает, если вы в замешательстве.