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

Цикл импорта не разрешен

У меня проблема с

цикл импорта не разрешен

Похоже, когда я пытаюсь проверить свой контроллер. В качестве вывода у меня есть

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

Может кто-нибудь сказать мне, как читать или понимать эту ошибку? Где неправильная зависимость?

4b9b3361

Ответ 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

Вы уже импортировали ранее. Это не поддерживается.