Ваш импорт должен быть абсолютным:
import "github.com/abonec/go_import_problem/models"
Если вы не хотите экспортировать проект на внешний референт, вы можете сделать:
import "go_import_problem/models"
(Это: «the name of your project folder accessible by GOPATH/your package
»)
См. « Как использовать пользовательские пакеты в golang? ».
И вы бы использовали:
models.User
Как упоминалось в Эффективный Go :
Импортер пакета будет использовать это имя для ссылки на его содержимое, поэтому экспортированные имена в пакете можно использовать этот факт, чтобы избежать заикания. (Не используйте примечание import
blockquote>.
, которое может упростить тесты, которые должны выполняться за пределами тестируемого пакета, но в противном случае его следует избегать.)kostix добавляет в комментарии :
, чтобы повторить, имена пакетов Go всегда абсолютны (то есть нет относительных имен пакетов, ни с
./
, ни с../
, ни с чем-нибудь подобным), но эти имена «привязаны» к одной из так называемых рабочих областей, перечисленных в$GOPATH
.Когда Go ищет пакет, он просматривает рабочие области и пытается найти пакет в каждом из них по порядку. Поиск не является рекурсивным. И нет, нет необходимости кодировать URL-адреса в пулах пакетов - если вы не хотите сделать свой пакет общедоступным.
blockquote>