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


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

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

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

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 53

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