Programming/Go
Go언어 "import cycle not allowed" 편
KayEsQuo
2021. 2. 25. 22:14
여러 개의 모듈을 사용하여 프로젝트를 하다 보면 "import cycle not allowed" 문구가 나와 당황하게 되었던 적이 있을 것이다. 그러나 원인을 알면 사이클이 왜 안되는지 알 수 있다. 자세한 건 아래 그림과 코드로 설명을 하겠다.
[main.go]
package main
import (
"fmt"
"golang/cycle/Firstsub"
)
func main() {
Firstsub.AddCall()
}
[Firstsub.go]
package Firstsub
import (
"fmt"
secondsub "golang/cycle/Secondsub"
)
func AddCall() {
fmt.Println("this is firstSub")
secondsub.CallSecondSub()
}
[secondsub.go]
package secondsub
import (
"fmt"
"golang/cycle/Firstsub"
)
func CallSecondSub() {
fmt.Println("this is second sub")
Firstsub.AddCall()
}
위 그림에 나와있는 모듈과 코드의 모듈은 일치한다. 언뜻 보면 문법에는 이상한 점이 없는 코드인 듯 하지만, 자세히 보면 FirstSub.go SecondSub.go 사이에서 import를 하여 무한반복적으로 호출하는 것을 알 수 있다. 이를 사이클이라고 한다. 만일 "import cycle not allowed"라는 에러 문구를 봤다면, 내 프로젝트에 사이클 구조가 있는지 확인해보자