여러 개의 모듈을 사용하여 프로젝트를 하다 보면 "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"라는 에러 문구를 봤다면, 내 프로젝트에 사이클 구조가 있는지 확인해보자
'Programming > Go' 카테고리의 다른 글
Go언어 리시버(receiver) 편 (0) | 2021.02.26 |
---|---|
Go언어 예외처리(panic, recover) 편 (0) | 2021.02.26 |
Go언어 [초간단] 명령어 Os.Args 편 (0) | 2021.02.24 |
Go언어 [초간단] 유닛테스트 편 (0) | 2021.02.23 |
Go언어 [입문] 반복문 편 (0) | 2021.02.21 |