Цикл импорта не разрешен
У меня проблема с
цикл импорта не разрешен
Похоже, когда я пытаюсь проверить свой контроллер. В качестве вывода у меня есть
can't load package: import cycle not allowed
package project/controllers/account
imports project/controllers/base
imports project/components/mux
imports project/controllers/account
import cycle not allowed
package project/controllers/account
imports project/controllers/base
imports project/components/mux
imports project/controllers/account
import cycle not allowed
package project/controllers/account
imports project/controllers/base
imports project/components/mux
imports project/controllers/routes
imports project/controllers/base
Может кто-нибудь сказать мне, как читать или понимать эту ошибку? Где неправильная зависимость?
Ответы
Ответ 1
Вот иллюстрация вашей первой проблемы с циклом импорта.
project/controllers/account
^ \
/ \
/ \
/ \/
project/components/mux <--- project/controllers/base
Как видно из моей плохой диаграммы ASCII, вы создаете цикл импорта, когда project/components/mux
импортирует project/controllers/account
. Поскольку Go не поддерживает циклические зависимости, вы получаете ошибку import cycle not allowed
во время компиляции.
Ответ 2
Я просто столкнулся с этим. Вы можете получить доступ к методу/типу из одного и того же пакета, используя само имя пакета.
Вот пример, иллюстрирующий, что я имею в виду:
В foo.go:
// foo.go
package foo
func Foo() {...}
В foo_test.go:
// foo_test.go
package foo
// try to access Foo()
foo.Foo() // WRONG <== This was the issue. You are already in package foo, there is no need to use foo.Foo() to access Foo()
Foo() // CORRECT
Ответ 3
Возможно, вы импортировали,
project/controllers/base
внутри
project/controllers/routes
Вы уже импортировали ранее. Это не поддерживается.