Подтвердить что ты не робот

Golang: Ошибка "невозможно загрузить пакет: пакет my_prog: найденные пакеты my_prog и main"

В моем GOPATH у меня есть что-то вроде этого:

/bin/
/pkg/
/src/
/src/my_prog/
/src/my_prog/main.go
/src/my_prog/d_interface.go
/src/my_prog/d_struct_that_implements_the_interface.go

В main.go у меня package main, в d_interface.go и d_struct_that_implements_the_interface.go у меня есть package my_prog.

Когда я пытаюсь go build my_prog, я получаю следующую ошибку:

can't load package: package my_prog: found packages my_prog (d_interface.go) and main (main.go) in C:\dev\Code\Go\src\my_prog

Означает ли это, что любой файл, принадлежащий package main, должен находиться в его собственной папке? Если да, то в чем причина этого?

4b9b3361

Ответ 1

Да, каждый пакет должен быть определен в его собственном каталоге.

Структура источника определена в Как писать код перехода.

Пакет - это компонент, который вы можете использовать в нескольких программах, которые вы можете публиковать, импортировать, получать из URL-адреса и т.д. Поэтому имеет смысл иметь свой собственный каталог столько, сколько может иметь программа каталог.

Ответ 2

Кроме того, если все, что вы пытаетесь сделать, это разбить файл main.go на несколько файлов, то просто назовите другие файлы "main package", если только вы определяете основную функцию в одном из этих файлов, вы хорошо идти.

Ответ 3

убедитесь, что ваш пакет установлен в каталог $gopath или уже внутри вашей рабочей области.

Например: если ваш $gopath = "c:\go", убедитесь, что пакет внутри "C:\Go\src\pkg\github.com"