Цикл импорта не разрешен
У меня проблема с
цикл импорта не разрешен
оно появляется, когда я пытаюсь проверить мой контроллер. В качестве вывода у меня есть
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
может кто-нибудь сказать мне, как читать и понимать эту ошибку? Где же зависимость неправильная?
2 ответа:
вот иллюстрация вашей первой проблемой цикла.
project/controllers/account ^ \ / \ / \ / \/ project/components/mux <--- project/controllers/base
как вы можете видеть с моей плохой диаграммой ASCII, вы создаете цикл импорта, когда
project/components/mux
импортproject/controllers/account
. С ходу не поддерживает циклические зависимости, вы получаетеimport cycle not allowed
ошибка во время компиляции.
Я только что столкнулся с этим. Вы можете получить доступ к методу / типу из того же пакета, используя само имя пакета.
вот пример, чтобы проиллюстрировать, что я имею в виду:
в foo.вперед:
// foo.go package foo func Foo() {...}
в foo_test.вперед:
// 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