[Go] circular import ๋ฌธ์
import cycle not allowed
Go ๋ชจ๋์์คํ ์ ๋ถํธํ ํ๊ณ์ ์ค ํ๋๋ค.
๊ณ์ธตํ์ผ๋ก ๋ชจ๋์ ์์์ฌ๋ฆฌ๋ Rust ๊ฐ์ ๋ชจ๋์์คํ ์์๋ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ณ๋ก ์๊ณ ํํผํ๊ธฐ๋ ์ฌ์ด๋ฐ, Go์ ๋ชจ๋์์คํ ์ ๊ฐ ํจํค์ง ๊ฒฝ๋ก๊ฐ ๋ค ๋ ๋ฆฝ์ ์ด๊ณ ์ํ์ ์ธ ๊ด๊ณ๋ผ์ ์ด๋ฐ ๊ท์ฐฎ์ ๋ฌธ์ ๊ฐ ์๋ค.
์๋ฅผ ๋ค์ด, A๊ฐ B ํจํค์ง๋ฅผ importํ๊ณ , B๊ฐ A ํจํค์ง๋ฅผ importํ๋ค๋ฉด ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
์ฝ๋๋ก ํ๋ฒ ์์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค.
๊ฐ ํ๋ก์ธ์์ ๋์์ ์ ์ํ๋ ์ธํฐํ์ด์ค ํ๋์, ๊ทธ ํ๋ก์ธ์๋ค์ ๋งคํ ๋ชฉ๋ก์ด ์๋ค.
ํน์ ๋ฌธ์์ด์ด ์ ๋ฌ๋ ๋ ํด๋น ํ๋ก์ธ์๋ฅผ ์คํ์ํค๊ธฐ ์ํ ๊ตฌ์กฐ ๋งคํ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ธํฐํ์ด์ค์ ๋ํ ๊ฐ๋จํ ๊ตฌํ์ด ์๋ค.
์ฌ๊ธฐ๊น์ง๋ ๊ด์ฐฎ๋ค. ์ด์ฐจํผ ๊ณ ๋ญ์ ๋คํ์ฑ์ ๋ํ์ดํ์ด๋ผ ์ธํฐํ์ด์ค๋ฅผ ๋ช
์์ ์ผ๋ก ๊ฐ์ ธ์ค์ง๋ ์์ผ๋๊น
ํ์ง๋ง ๊ฐ์ ธ์ฌ ์ผ์ด ์๊ธธ ์๋ ์๋ค.
๋ด ๊ฒฝ์ฐ์๋ ์ง๊ธ Processor ๊ฐ์ฒด๋ฅผ ํ๋ ๋ฐ์์ ์ฐ๋ฌ์ ์คํํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค ํ๋ค.
๊ทธ๋ฌ๋ฉด ์ด์
์๋ฌ๊ฐ ํฐ์ง๋ค.

์ผ๋ฐ์ ์ธ ํด๊ฒฐ๋ฒ
๋ณดํต์ ํ์ผ, ํจํค์ง๋จ์๋ฅผ ์ ์ชผ๊ฐ๋ ๊ฒ๋ง์ผ๋ก ํด๊ฒฐ์ ๋ณผ ์ ์๋ค.
ํจํค์ง-ํด๋ ๋จ์๋ก import๋ฅผ ํ๋ค๋ณด๋ ๋ฌด์กฐ๊ฑด ๋๋ ํฐ๋ฆฌ ๋จ์๋ก ์ชผ๊ฐ์ผ ํ๋๊ฒ ๋ถํธํ๊ธด ํ์ง๋ง..
์ผ๋จ ์ด ๊ฒฝ์ฐ์๋ interface๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข๋ค. ์ฌ๊ธฐ์ ๊ธฐ ๋ถ๋ ค๋ค๋๋ ๋ ์์ด๋๊น.
๊ฒฝํ์ ์ธํฐํ์ด์ค๋ ๊ผญ ์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ ๋จ๋
ํ์ผ๋ก ๋ถ๋ฆฌํด๋๋๊ฑธ ๊ถ์ฅํ๋ค.
์ฌ๊ธฐ์ ๊ธฐ์ ๊ณตํต์ผ๋ก ๋ถ๋ ค๋ค๋๊ธฐ ์ฌ์ด ๋
์์ด๋, ๋น์ฅ์ ๊ด์ฐฎ๋๋ผ๋ ์ฐ๋ค๋ณด๋ฉด import๊ฐ ๊ผฌ์ด๊ธฐ ๋ฑ ์ข๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ญ๋ณ์ ๋งคํ Processors๋ main ํจํค์ง๋ก ์ฎ๊ฒผ๋ค.

๊ทธ๋ผ ์ด์ ์ ์คํ์ด ๋ ๊ฒ์ด๋ค.