Alert
์ด ๊ธ์ Claude Code์ ๋์์ ๋ฐ์ ์์ฑ๋์์ต๋๋ค
TL;DR
- ์ ์ฅ์ โ ๋ชจ๋ โ ํจํค์ง์ ์ธ ๊ณ์ธต ๊ตฌ์กฐ์ ๊ฐ ์ธต์ ์ญํ ๊ตฌ๋ถ
- ๋ชจ๋์
go.mod๋ฅผ ๋ฃจํธ๋ก ํ๊ณ ์ ์ญ์์ ์ ์ผํ ์๋ณ์(๋ณดํต ์ ์ฅ์ ๊ฒฝ๋ก)๋ฅผ ๊ฐ์ง- import๋ ํ์ผ์ด ์๋๋ผ ํด๋(ํจํค์ง) ๋จ์์ด๊ณ , ๊ฒฝ๋ก๋ ๋ชจ๋ ์ด๋ฆ + ํด๋ ๊ฒฝ๋ก
- ์๋ณ์ ์ฒซ ๊ธ์ ๋๋ฌธ์๋ฉด ๊ณต๊ฐ, ์๋ฌธ์๋ฉด ๋น๊ณต๊ฐ๋ฅผ ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์
- ํจํค์ง ์ด๋ฆ์ ๋๋ ํฐ๋ฆฌ๋ช ๊ณผ ์ผ์น์ํค๊ณ ์ค๋ช ์ ์ผ๋ก ์ง๋ ํจ์ ์ด๋ฆ์์ ๋ฐ๋ณตํ์ง ์์
internal/ํด๋๋ ๋ถ๋ชจ ํธ๋ฆฌ ๋ฐ์์ import ๋ถ๊ฐ,go mod tidy๋ก ์์กด์ฑ ๋๊ธฐํ- ํ๋ก์ ํธ๋ ์์ผ๋ฉด ๋จ์ผ ํจํค์ง, ์ปค์ง๋ฉด
cmd/ยทinternal/ยทpkg/๋ก ๋ถ๋ฆฌ
Python์์๋ ๊ฐ์ ํด๋์ ํ์ผ์ import utils์ฒ๋ผ ๋ฐ๋ก ๊ฐ์ ธ์ค๊ฑฐ๋, ์๋๊ฒฝ๋ก(from . import helper)๋ก ๋์ด๋ค ์ด๋ค. Go๋ ๊ทธ๋ ๊ฒ ๋์ํ์ง ์๋๋ค. ์๋ฌด ํ์ผ์ด๋ ๊ฒฝ๋ก๋ก ๋ถ๋ฅด๋ ๊ฒ ์๋๋ผ, ๋ชจ๋๊ณผ ํจํค์ง๋ผ๋ ๋จ์๋ก ์์ง์ธ๋ค. ์ด ๊ธ์ Python์ ๋ชจ๋/ํจํค์ง/import/pip์ ์ต์ํ ๊ฐ๋ฐ์๊ฐ Go์ ์ฝ๋ ๊ตฌ์ฑ ๋ฐฉ์์ ์ดํดํ๋๋ก ์ ๋ฆฌํ๋ค.
1. ์ ์ฅ์ยท๋ชจ๋ยทํจํค์ง โ ์ธ ๊ณ์ธต
Go์ ์ฝ๋ ๊ตฌ์ฑ์ ์ธ ๋จ๊ณ๋ก ์์ฌ ์๋ค. ์์์๋ถํฐ ์ ์ฅ์, ๋ชจ๋, ํจํค์ง๋ค.
- ์ ์ฅ์(repository) โ ๋ฒ์ ๊ด๋ฆฌ ์์คํ (VCS)์ด ๋ค๋ฃจ๋ ๊ณต๊ฐ์ด๋ค. ๊น ์ ์ฅ์ ํ๋๊ฐ ์ฌ๊ธฐ์ ํด๋นํ๋ค. ์ฝ๋ ์ ์ฒด๊ฐ ๋ณด๊ด๋๊ณ ๋ฒ์ ์ด ๋งค๊ฒจ์ง๋ ๊ฐ์ฅ ๋ฐ๊นฅ ๊ป๋ฐ๊ธฐ๋ค.
- ๋ชจ๋(module) โ ์ ์ฅ์ ์์์ ํจ๊ป ๋ฐฐํฌ๋๋ Go ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ต์์ ๋ฃจํธ๋ค. ํ๋ ์ด์์ ํจํค์ง๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์ ์ญ์์ ์ ์ผํ ์๋ณ์๋ฅผ ๊ฐ์ง๋ค. ๋ณดํต ์ ์ฅ์ ๊ฒฝ๋ก(
github.com/user/proj)๋ฅผ ๊ทธ๋๋ก ์๋ณ์๋ก ์ด๋ค. ๋ฃจํธ์go.modํ์ผ์ด ์์ด์ผ ๋ชจ๋๋ก ์ธ์ ๋๋ค. - ํจํค์ง(package) โ ํจ๊ป ์ปดํ์ผ๋๋ ์์ค ํ์ผ์ ๋ฌถ์์ด๋ค. ํ์ผ ์๋จ์
package์ ์ธ์ผ๋ก ์ด๋ฆ์ด ์ ํด์ง๊ณ , import์ ์ต์ ๋จ์๊ฐ ๋๋ค. ํ๋์ ํด๋๊ฐ ํ๋์ ํจํค์ง๋ค.
์ ์ฅ์์ ๋ชจ๋์ ๋ณดํต 1:1
๋๋ถ๋ถ์ ์ ์ฅ์ ํ๋์ ๋ชจ๋ ํ๋(๋ฃจํธ์
go.modํ๋)๋ค. ์ด ๊ธ๋ ๊ทธ ๊ธฐ๋ณธ ๊ฒฝ์ฐ๋ฅผ ์ ์ ํ๋ค. ๋ค๋ง ํ์ ๋๋ ํฐ๋ฆฌ์go.mod๋ฅผ ๋ ๋๋ฉด ํ ์ ์ฅ์๊ฐ ์ฌ๋ฌ ๋ชจ๋๋ก ๊ฐ๋ฆฌ๋ ๋ฉํฐ๋ชจ๋ ์ ์ฅ์๋ ๊ฐ๋ฅํ๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ณธ์ฒด์, ๋ฌด๊ฑฐ์ด ์์กด์ฑ์ ์ฐ๋tools/ยทexamples/๋ฅผ ๋ถ๋ฆฌํ๊ฑฐ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฒ์ ๊ด๋ฆฌํ ๋ ์ด๋ค. ๋ค๋ง ๋ชจ๋ ๊ฒฝ๊ณ๋ฅผ ๋์ผ๋ฉด ์๋๊ฒฝ๋ก import๊ฐ ์ ๋๊ณ ๋๊ตฌ(go build ./...๋ฑ)๋ ๋ชจ๋ ๋จ์๋ก๋ง ๋์ํด ๊ด๋ฆฌ๊ฐ ๋ณต์กํด์ง๋ฏ๋ก, ํน๋ณํ ์ด์ ๊ฐ ์์ผ๋ฉด ์ ์ฅ์๋น ๋ชจ๋ ํ๋๊ฐ ๊ถ์ฅ๋๋ค.
Python๊ณผ ๋๋นํ๋ฉด ์ด๋ ๋ค.
| Python | Go |
|---|---|
๋ชจ๋ = ํ์ผ ํ๋(utils.py) | ํจํค์ง = ํด๋ ํ๋ |
ํจํค์ง = ๋๋ ํฐ๋ฆฌ + __init__.py | ๋ชจ๋ = go.mod๋ฅผ ๋ฃจํธ๋ก ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ/์ฑ |
| (์ ์ฅ์ ๊ฐ๋ ์ ์ธ์ด ์ฐจ์์์ ์ ๋ค๋ฃธ) | ์ ์ฅ์ = VCS ๊ณต๊ฐ, ๋ชจ๋์ ๋ด๋ ๋ฐ๊นฅ ๊ป๋ฐ๊ธฐ |
๊ฐ์ฅ ํท๊ฐ๋ฆฌ๋ ์ง์ ์ โํจํค์งโ๋ผ๋ ๋จ์ด๋ค. Python์์ ํจํค์ง๋ pip install๋ก ๋ฐ๋ ๋ฐฐํฌ ๋จ์์ ๊ฐ๊น์ง๋ง, Go์์ ๊ทธ ๋ฐฐํฌ ๋จ์๋ ๋ชจ๋์ด๋ค. Go์ ํจํค์ง๋ ๋ ์์ ๋จ์, ์ฆ importํด์ ์ฐ๋ ํด๋ ํ๋๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
๋จ์ด ๋งคํ ์ฃผ์
- Python โmoduleโ(ํ์ผ) โ Go โpackageโ(ํด๋)
- Python โpackageโ(
pip๋ก ๋ฐ๋ ๊ฒ) โ Go โmoduleโ(go get์ผ๋ก ๋ฐ๋ ๊ฒ)๊ฐ์ ๋จ์ด๋ผ๋ ๊ฐ๋ฆฌํค๋ ๋์์ด ํ ์นธ์ฉ ์ด๊ธ๋๋ค. ์ด ํ๋ฅผ ๋จธ๋ฆฟ์์ ๋๋ฉด ๋๋จธ์ง๊ฐ ์ฌ์์ง๋ค.
2. ๋ชจ๋ ์์ํ๊ธฐ
์ ํ๋ก์ ํธ๋ ๋ชจ๋ ์ด๊ธฐํ๋ก ์์ํ๋ค. 01ํธ์์ ๋ค๋ฃฌ go mod init์ด ๊ทธ ๋ช
๋ น์ด๋ค.
mkdir myproj && cd myproj
go mod init github.com/user/myproj์ด ๋ช
๋ น์ด go.mod ํ์ผ์ ๋ง๋ ๋ค. ๋ด์ฉ์ ๋จ์ํ๋ค.
module github.com/user/myproj
go 1.24์ฌ๊ธฐ์ module ์ค์ ์ ํ ์ด๋ฆ์ด ํต์ฌ์ด๋ค. ์ด ์ด๋ฆ์ด ๋ชจ๋ import ๊ฒฝ๋ก์ ๊ธฐ์ค์ ์ด ๋๋ค. ๋ชจ๋ ์์์ ๋ค๋ฅธ ํจํค์ง๋ฅผ ๋ถ๋ฅผ ๋ ๊ฒฝ๋ก๊ฐ ์ ๋ถ ์ด ์ด๋ฆ์์ ์ถ๋ฐํ๋ค.
Python์ผ๋ก ์น๋ฉด pyproject.toml์ ๋ง๋๋ ์ผ์ ํด๋นํ๋ค. uv init์ด๋ [project] ์น์
์ ์์ฑํ๋ ๊ฒ๊ณผ ๋น์ทํ ์๋ฆฌ๋ค.
# pyproject.toml โ Python ์ชฝ ๋์
[project]
name = "myproj"
version = "0.1.0"๋ค๋ง ๊ฒฐ์ ์ ์ฐจ์ด๊ฐ ํ๋ ์๋ค. Python์ name์ ํจํค์ง๋ฅผ ๋ฐฐํฌํ ๋ ์ฐ๋ ์ด๋ฆ์ผ ๋ฟ, ์ฝ๋ ์์ import ๊ฒฝ๋ก์ ์ง์ ๋ฌถ์ด์ง ์๋๋ค. Go์ module ์ด๋ฆ์ ๊ณง๋ฐ๋ก import ๊ฒฝ๋ก๊ฐ ๋๋ค. ๋ชจ๋ ์ด๋ฆ์ ์ ํ๋ค๋ ๊ฑด import ๊ฒฝ๋ก๋ฅผ ์ ํ๋ค๋ ๋ป์ด๋ค. ๊ทธ๋์ ๋ณดํต ์ ์ฅ์๋ฅผ ์ฌ๋ฆด ์ฃผ์(github.com/user/myproj)๋ฅผ ๊ทธ๋๋ก ์ด๋ค.
ํํ ์ ์ฅ์ ์ฃผ์๋ฅผ ์ฐ๋ ์ด์ ๋, ๋ชจ๋ ์ด๋ฆ์ด import ์ ๋์ฌ์ด์ Go๊ฐ ๊ทธ ์ฝ๋๋ฅผ ๋ฐ์์ค๋ ์์น์ด๊ธฐ๋ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ ํผ์ ๋ก์ปฌ์์๋ง ๋น๋ํ๋ค๋ฉด module myproj์ฒ๋ผ ์๋ฌด ์ด๋ฆ์ด๋ ์ค๋ ์ ๋์๊ฐ๋ค. ํ์ง๋ง ๋๊ตฐ๊ฐ(๋ฏธ๋์ ๋ ํฌํจ) ์ด ๋ชจ๋์ go get์ผ๋ก ๊ฐ์ ธ๊ฐ๋ ค๋ฉด ๊ทธ ์ด๋ฆ์ด ์ค์ ๋ฐ์์ฌ ์ ์๋ ์ฃผ์์ฌ์ผ ํ๋ค. Go๋ ์ฒซ ๊ฒฝ๋ก ์์์ ์ (.)์ด ์๋ ์ด๋ฆ(myproj)์ ์๊ฒฉ์์ ๋ฐ์ ์ ์๋ ๊ฒ์ผ๋ก ์ทจ๊ธํ๋ฏ๋ก, ๋๋ฉ์ธ์ด ๋ค์ด๊ฐ ์ฃผ์๋ผ์ผ ์ด๋์ ๊ฐ์ ธ์ฌ์ง ์ ์ ์๋ค.
๋ชจ๋ ์ด๋ฆ์ ๋์ค์ ๋ฐ๊พธ๋ฉด ์๊ธฐ๋ ์ผ
๋ชจ๋ ์ด๋ฆ์ ๊ทธ ๋ชจ๋ ์ ๋ชจ๋ ํจํค์ง์ import ์ ๋์ฌ๋ค. ๊ทธ๋์ ์ด๋ฆ์ ๋ฐ๊พธ๋ฉด ๊ทธ ์ ๋์ฌ๋ฅผ ์ฐ๋ import๊ฐ ์ ๋ถ ๊นจ์ง๋ค. ์๋ฅผ ๋ค์ด
module myproj๋ก ์์ํด์ ์ด๋ ๊ฒ ์งฐ๋ค๊ณ ํ์.// main.go โ ๋ชจ๋ ์ด๋ฆ์ด myproj์ผ ๋ import "myproj/extract"๋์ค์ ๊ณต๊ฐํ๋ ค๊ณ
go.mod์ ๋ชจ๋ ์ด๋ฆ์github.com/user/myproj๋ก ๋ฐ๊พธ๋ฉด, ์ import๋ ๋ ์ด์ ์๋myproj๋ฅผ ๊ฐ๋ฆฌ์ผ ๋น๋๊ฐ ๊นจ์ง๋ค. ๋ชจ๋ ์์ ๋ชจ๋ ์๊ธฐ ํจํค์ง import๋ฅผ ์ ์ ๋์ฌ๋ก ๊ณ ์ณ์ผ ํ๋ค.// ์ ๋ถ ์ด๋ ๊ฒ ๋ฐ๊ฟ์ผ ํจ import "github.com/user/myproj/extract"์ธ๋ถ ํจํค์ง(
fmt,github.com/gin-gonic/gin๋ฑ)๋ฅผ ๋ถ๋ฅด๋ import๋ ์ ๊นจ์ง๊ณ , ๋ด ๋ชจ๋ ์์ ์ ๊ฐ๋ฆฌํค๋ import๋ง ๊นจ์ง๋ค. ๊ฒ๋ค๊ฐ ์ด๋ฏธ ์ด ๋ชจ๋์ ์์กด์ฑ์ผ๋ก ์ฐ๋ ๋ค๋ฅธ ํ๋ก์ ํธ๋ ๋๊ฐ์ด ๊นจ์ง๋ค(๊ทธ๋ค์๊ฒ ์ฌ์ค์ ๋ค๋ฅธ ๋ชจ๋์ด ๋๋ค). ๊ทธ๋์ ์ฒ์๋ถํฐ ์ค์ ์ ์ฅ์ ์ฃผ์๋ก ์ ํด๋๋ ๊ฒ ์ข๋ค.
3. ํจํค์ง์ import
ํจํค์ง๋ ํด๋, import๋ ํด๋ ๋จ์
๋ชจ๋ Go ํ์ผ์ ์ฒซ ์ค์ ์๊ธฐ๊ฐ ์ํ ํจํค์ง๋ฅผ ์ ์ธํ๋ค.
package extract์ฌ๊ธฐ์ ๋ ๊ท์น์ด ๋ฐ๋ผ์จ๋ค.
- ๊ฐ์ ํด๋์ ํ์ผ์ ๊ฐ์ ํจํค์ง์ฌ์ผ ํ๋ค. ํ ํด๋ ์์์
package extract์package parse๋ฅผ ์์ ์ ์๋ค. - import๋ ํ์ผ์ด ์๋๋ผ ํด๋(ํจํค์ง) ๋จ์๋ก ํ๋ค. Python์ฒ๋ผ ํน์ ํ์ผ(
from utils.helper import f)์ ์ฝ ์ง์ด ๊ฐ์ ธ์ค์ง ์๋๋ค. ํด๋๋ฅผ ํต์งธ๋ก ๊ฐ์ ธ์ค๊ณ , ๊ทธ ์์ ๊ณต๊ฐ ์๋ณ์๋ฅผ ์ด๋ค.
import ๊ฒฝ๋ก๋ ๋ชจ๋ ์ด๋ฆ + ํด๋ ๊ฒฝ๋ก๋ก ๋ง๋ค์ด์ง๋ค. ๋ชจ๋์ด github.com/user/myproj์ด๊ณ ๊ทธ ์์ extract/ ํด๋๊ฐ ์๋ค๋ฉด ๊ฒฝ๋ก๋ ์ด๋ ๊ฒ ๋๋ค.
import "github.com/user/myproj/extract"Python์ from myproj.extract import names์ ๋ชจ์์ ๋น์ทํ์ง๋ง, Go๋ ์ (.) ๋์ ์ฌ๋์(/)๋ก ๊ฒฝ๋ก๋ฅผ ์๊ณ , ๋์ ์ค๋ ๊ฑด ํ์ผ์ด ์๋๋ผ ํด๋๋ผ๋ ์ ์ด ๋ค๋ฅด๋ค.
์๋ฐํ๋ import๋ ํด๋ ๊ฒฝ๋ก๋ค
๊ฒฝ๋ก ๋์
extract๋ ํด๋ ์ด๋ฆ์ด์ง, ๊ทธ ์ ํ์ผ์ด ์ ์ธํpackage์ด๋ฆ์ด ์๋๋ค. ๋์ ๋ณ๊ฐ๋ค. import๋ ํด๋ ๊ฒฝ๋ก๋ก ํ๊ณ , ์ฝ๋์์ ๋ถ๋ฅผ ๋๋ ๊ทธ ํด๋๊ฐ ์ ์ธํpackage์ด๋ฆ์ผ๋ก ํ๋ค. ๋ณดํต ์ด ๋์ ๊ฐ๊ฒ ๋ง์ถ์ง๋ง(๊ด๋ก) ๋ค๋ฅผ ์๋ ์๋ค โ ํด๋๊ฐcoolstuff์ธ๋ฐpackage mylib์ด๋ฉดimport ".../coolstuff"๋ก ๊ฐ์ ธ์mylib.Hello()๋ก ๋ถ๋ฅธ๋ค. ๋ณ์นญ์ ์ ๋ถ์ฌ๋ Go๊ฐ ์์ค์์package์ด๋ฆ์ ์ฝ์ด ์์์ ๋ฌถ์ด์ฃผ๋ฏ๋ก ๊ทธ๋ฅ ๋์ํ๋ค. ๋ค๋งgoimports๋ ํด๋ ์ด๋ฆ๊ณผpackage์ด๋ฆ์ด ๋ค๋ฅด๋ฉด ํท๊ฐ๋ฆผ์ ์ค์ด๋ ค๊ณ ์ค์ package์ด๋ฆ์ ๋ณ์นญ์ผ๋ก ๋ถ์ฌ์ค๋ค(import mylib ".../coolstuff").
๊ฐ์ ํจํค์ง ์์์๋ import๊ฐ ํ์ ์๋ค
๊ฐ์ ํด๋์ ์๊ณ ๊ฐ์ package ์ด๋ฆ์ ๊ฐ์ง ํ์ผ๋ผ๋ฆฌ๋ ์๋ก๋ฅผ ์์ ๋กญ๊ฒ ๋ถ๋ฅธ๋ค. import๋, ์ ๋์ด๋ ํ์ ์๋ค.
// a.go
package extract
func Names() {}
// b.go (๊ฐ์ ํด๋)
package extract
func run() {
Names() // ๊ฐ์ ํจํค์ง โ ๊ทธ๋ฅ ํธ์ถ
}Python์์ ๊ฐ์ ๋ชจ๋(ํ์ผ) ์์ ํจ์๋ฅผ ๊ทธ๋ฅ ๋ถ๋ฅด๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฐ๊ฐ์ธ๋ฐ, Go์์๋ ๊ทธ ๋ฒ์๊ฐ ํ์ผ์ด ์๋๋ผ ํด๋ ์ ์ฒด๋ก ๋์ด์ง๋ค. ํด๋ ์์ ํ์ผ๋ค์ด ์ฌ์ค์ ํ๋๋ก ํฉ์ณ์ง๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
๋ค๋ฅธ ํจํค์ง๋ ํด๋๋ฅผ ๋๋๊ณ importํ๋ค
๋ค๋ฅธ ๋์์ ํ๋ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๋ ค๋ฉด ํด๋๋ฅผ ๋๋๊ณ , ์ฐ๋ ์ชฝ์์ importํ๋ค.
// extract/extract.go
package extract
func Names() []string { return nil }
// main.go
package main
import "github.com/user/myproj/extract"
func main() {
names := extract.Names() // ํจํค์ง ์ด๋ฆ์ผ๋ก ์ ๊ทผ
}๋ค๋ฅธ ํจํค์ง์ ์๋ณ์๋ ๋ฐ๋์ ํจํค์ง๋ช
.์๋ณ์ ํํ๋ก ๋ถ๋ฅธ๋ค(extract.Names). ์ด ์ ์ด Python์ from x import *์ ๋ค๋ฅด๋ค. Go๋ ์ด๋ฆ์ ์ ์ญ์ผ๋ก ํ์ด ํค์น์ง ์๊ณ , ํญ์ ์ด๋ ํจํค์ง์์ ์๋์ง ๋๋ฌ๋ธ๋ค.
์ด๋ฆ์ด ๊ฒน์น๋ ํจํค์ง๋ alias๋ก ๊ตฌ๋ถ
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ํด๋ ๊ฒฝ๋ก๋ ๋ค๋ฅด์ง๋ง ํจํค์ง ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ํ์ ์ผ๋ก crypto/rand์ math/rand ๋ ๋ค ํจํค์ง ์ด๋ฆ์ด rand๋ค. ๊ทธ๋๋ก ๊ฐ์ด importํ๋ฉด ์ถฉ๋ํ๋ฏ๋ก ๋ณ์นญ(alias)์ ๋ถ์ธ๋ค.
import (
crand "crypto/rand"
mrand "math/rand"
)
func main() {
_ = crand.Reader
_ = mrand.Intn(10)
}Python์ import numpy as np์ ๊ฐ์ ๋ฐ์์ด๋ค. ๋ค๋ง Go์์๋ ๋ณด๊ธฐ ์ข์๊ณ ์ฐ๋ ๊ฒ ์๋๋ผ, ์ด๋ฆ ์ถฉ๋์ ํธ๋ ์ค์ฉ์ ์ฅ์น๋ก ์ฃผ๋ก ์ด๋ค.
์ ๋ฆฌ
- ๊ฐ์ ํจํค์ง = ๊ฐ์ ํด๋ + ๊ฐ์
package๋ช โ import ๋ถํ์, ๊ทธ๋ฅ ํธ์ถ- ๋ค๋ฅธ ํจํค์ง = ๋ค๋ฅธ ํด๋ โ import ํ์ +
ํจํค์ง๋ช .์๋ณ์๋ก ์ ๊ทผ- import ๊ฒฝ๋ก = ๋ชจ๋ ์ด๋ฆ + ํด๋ ๊ฒฝ๋ก
4. ๊ณต๊ฐ์ ๋น๊ณต๊ฐ: ๋๋ฌธ์ ๊ท์น
Go์๋ public, private ํค์๋๊ฐ ์๋ค. ๋์ ์๋ณ์ ์ฒซ ๊ธ์์ ๋์๋ฌธ์๋ก ์ธ๋ถ ๊ณต๊ฐ ์ฌ๋ถ๋ฅผ ์ ํ๋ค.
- ์ฒซ ๊ธ์๊ฐ ๋๋ฌธ์ โ ๊ณต๊ฐ(exported). ๋ค๋ฅธ ํจํค์ง์์ ์ ๊ทผ ๊ฐ๋ฅ
- ์ฒซ ๊ธ์๊ฐ ์๋ฌธ์ โ ๋น๊ณต๊ฐ(unexported). ๊ฐ์ ํจํค์ง ์์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
package extract
func Names() []string { return nil } // ๊ณต๊ฐ โ ๋ฐ์์ extract.Names() ๊ฐ๋ฅ
func parse() string { return "" } // ๋น๊ณต๊ฐ โ extract ํจํค์ง ์์์๋ง ์ฌ์ฉ
type User struct {
Name string // ๊ณต๊ฐ ํ๋
age int // ๋น๊ณต๊ฐ ํ๋
}์ด ๊ท์น์ ํจ์, ํ์ , ๋ณ์, ์์, ๊ตฌ์กฐ์ฒด ํ๋ ๋ฑ ๋ชจ๋ ํจํค์ง ๋ ๋ฒจ ์๋ณ์์ ๋๊ฐ์ด ์ ์ฉ๋๋ค. ๊ทธ๋์ 02ํธ์์ ์ด๋ฆ ์ง๋ ๋ฒ์ ๋ค๋ฃฐ ๋ ๋์๋ฌธ์๊ฐ ๋จ์ํ ์คํ์ผ์ด ์๋๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค. ์ฒซ ๊ธ์ ํ๋๊ฐ ์ ๊ทผ ๋ฒ์๋ฅผ ๊ฒฐ์ ํ๋ค.
Python๊ณผ ๋น๊ตํ๋ฉด ์ฐจ์ด๊ฐ ๋ถ๋ช
ํ๋ค. Python์์ _name์ฒ๋ผ ๋ฐ์ค์ ๋ถ์ด๋ ๊ฑด โ์ฐ์ง ๋ง๋ผโ๋ ๊ด๋ก์ผ ๋ฟ, ๊ฐ์ ๋ ฅ์ด ์๋ค. ๋ฐ์์ obj._name์ผ๋ก ์ ๊ทผํด๋ ์ธํฐํ๋ฆฌํฐ๋ ๋ง์ง ์๋๋ค.
# Python โ ๊ด๋ก์ผ ๋ฟ, ๋ง์ง ์์
class User:
def __init__(self):
self.name = "Alice"
self._age = 30 # "๋ด๋ถ์ฉ"์ด๋ผ๋ ์ ํธ์ผ ๋ฟ
u = User()
print(u._age) # 30 โ ๊ทธ๋ฅ ์ ๊ทผ๋จGo๋ ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์ ํ๋ค. ์๋ฌธ์๋ก ์์ํ๋ ์๋ณ์๋ฅผ ๋ค๋ฅธ ํจํค์ง์์ ๋ถ๋ฅด๋ฉด ์ปดํ์ผ ์์ฒด๊ฐ ์คํจํ๋ค.
๊ณต๊ฐ API๋ฅผ ์ข๊ฒ ์ ์งํ๋ ๋ฒ
๋ฐ์์ ๊ผญ ์จ์ผ ํ๋ ๊ฒ๋ง ๋๋ฌธ์๋ก, ๋๋จธ์ง๋ ์๋ฌธ์๋ก ๋๋ค. ๊ณต๊ฐ ๋ฉด์ ์ด ์ข์์๋ก ๋์ค์ ๋ด๋ถ ๊ตฌํ์ ๋ฐ๊ฟ ์์ ๊ฐ ์ปค์ง๋ค. Python์์๋ ์ด๊ฑธ ๊ท์จ๋ก ์ง์ผ์ผ ํ์ง๋ง, Go์์๋ ๋์๋ฌธ์๋ง ๋ง์ถ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๋์ ์ง์ผ ์ค๋ค.
5. ํจํค์ง ์ด๋ฆ ์ง๊ธฐ ๊ด๋ก
๋๋ ํฐ๋ฆฌ ์ด๋ฆ๊ณผ ๋ง์ถ๋ค
ํจํค์ง ์ด๋ฆ์ ๋ณดํต ๊ทธ ํจํค์ง๊ฐ ๋ ๋๋ ํฐ๋ฆฌ ์ด๋ฆ๊ณผ ๊ฐ๊ฒ ์ง๋๋ค. extract/ ํด๋ ์ ํ์ผ์ด๋ฉด package extract๋ค. ์์ธ๋ ์คํ ํ์ผ์ ์ง์
์ ์ด ๋๋ main, ๊ทธ๋ฆฌ๊ณ ๋ฒ์ ์ด ๋ถ์ ๋๋ ํฐ๋ฆฌ ์ ๋๋ค. ์ด ๊ด๋ก๋ฅผ ์งํค๋ฉด import ๊ฒฝ๋ก์ ๋ง์ง๋ง ์กฐ๊ฐ๊ณผ ์ฝ๋์์ ์ฐ๋ ํจํค์ง ์ด๋ฆ์ด ์ผ์นํด ํผ๋์ด ์ค์ด๋ ๋ค.
์ค๋ช
์ ์ผ๋ก ์ง๋๋ค โ util ๊ฐ์ ์กํ ๊ธ์ง
์ฌ๋ฌ ๊ฐ์ง๋ฅผ ํ๋ฐ ๋ชจ์ util, common, helpers ๊ฐ์ ์ด๋ฆ์ ํผํ๋ค. ๊ทธ ์์ ๋ญ๊ฐ ์๋์ง ์ด๋ฆ๋ง ๋ด์๋ ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ธฐ๋ฅ์ ๋๋ฌ๋ด๋ ์ด๋ฆ์ผ๋ก ํด๋๋ฅผ ๋๋๋ค.
// ๊ถ์ฅํ์ง ์์ โ util์ ๋ญ๊ฐ ๋ค์๋์ง ๋ชจ๋ฅธ๋ค
util.ExtractNames(doc)
// ๊ถ์ฅ โ ํจํค์ง ์ด๋ฆ์ด ๊ณง ์ค๋ช
์ด ๋๋ค
extract.Names(doc)ํจํค์ง๋ช ์ ์๋ณ์์์ ๋ฐ๋ณตํ์ง ์๋๋ค
ํธ์ถํ๋ ์ชฝ์์๋ ํญ์ ํจํค์ง๋ช
.์๋ณ์ ํํ๊ฐ ๋๋ฏ๋ก, ์๋ณ์์ ํจํค์ง ์ด๋ฆ์ ๋ ๋ฃ์ผ๋ฉด ๋ง์ด ๊ฒน์น๋ค.
// ๊ถ์ฅํ์ง ์์ โ "extract.ExtractNames" ์ฒ๋ผ extract๊ฐ ๋ ๋ฒ
package extract
func ExtractNames() {}
// ๊ถ์ฅ โ ํธ์ถํ๋ฉด "extract.Names"๋ก ๊น๋ํ๋ค
package extract
func Names() {}์์ธ๋ ํจํค์ง ์ด๋ฆ๊ณผ ํต์ฌ ํ์
/ํจ์๊ฐ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์์ง๋ ๊ฒฝ์ฐ๋ค. ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ sort.Sort๊ฐ ๊ทธ๋ฐ ์๋ค. ์ ๋ ฌ ํจํค์ง์ ๋ํ ๋์์ด ์ ๋ ฌ์ด๋ ์ด๋ฆ์ด ๊ฒน์ณ๋ ์ด์ํ์ง ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ๋ง ์์ธ๋ก ๋๋ค.
ํ ์ค ๊ธฐ์ค
ํธ์ถํ๋ ์ชฝ์์ ์ด๋ป๊ฒ ์ฝํ๋์ง๋ฅผ ๋จผ์ ๊ทธ๋ ค ๋ณธ๋ค.
extract.Names(doc)์ฒ๋ผ ํจํค์ง๋ช ๊ณผ ์๋ณ์๊ฐ ํ ๋ฌธ์ฅ์ผ๋ก ์ฝํ๋ฉด ์ ์ง์ ์ด๋ฆ์ด๋ค.
6. internal ํจํค์ง
๊ณต๊ฐ ์ฝ๋์ ๋ด๋ถ ๊ตฌํ์ ๋๋ ๋ Go๋ internal/์ด๋ผ๋ ํน๋ณํ ํด๋ ์ด๋ฆ์ ์ ๊ณตํ๋ค. internal/ ์์ ํจํค์ง๋ ๊ทธ ํด๋์ ๋ถ๋ชจ ๋๋ ํฐ๋ฆฌ ํธ๋ฆฌ ๋ฐ์์๋ importํ ์ ์๋ค. ์ด ์ ์ฝ์ ๊ด๋ก๊ฐ ์๋๋ผ ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์ ํ๋ค.
๊ตฌ์กฐ ์์๋ฅผ ๋ณด์.
myproj/
โโโ go.mod // module github.com/user/myproj
โโโ main.go
โโโ internal/
โ โโโ store/
โ โโโ store.go // package store
โโโ extract/
โโโ extract.go // package extract์ฌ๊ธฐ์ internal/store๋ myproj/ ํธ๋ฆฌ ์์ ์ฝ๋(main.go, extract)์์๋ ์์ ๋กญ๊ฒ importํ ์ ์๋ค. ํ์ง๋ง ์ด ๋ชจ๋์ ๊ฐ์ ธ๋ค ์ฐ๋ ๋ค๋ฅธ ๋ชจ๋์ github.com/user/myproj/internal/store๋ฅผ importํ๋ ค ํ๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋๋ค.
// ๊ฐ์ ๋ชจ๋ ์ โ ๊ฐ๋ฅ
import "github.com/user/myproj/internal/store"
// ๋ค๋ฅธ ๋ชจ๋์์ โ ์ปดํ์ผ ์๋ฌ
// use of internal package ... not allowed์ฐ์์ ๋ช
ํํ๋ค. ๊ณต๊ฐํ๊ณ ์ถ์ง ์์ ๋ด๋ถ ๊ตฌํ์ internal/์ ๋๋ฉด, ์ธ๋ถ์์ ๊ทธ ์ฝ๋์ ์์กดํ๋ ์ผ์ ์์ฒ ์ฐจ๋จํ ์ ์๋ค. ๊ณต๊ฐ API๋ ์ข๊ฒ ์ ์งํ๊ณ ๋ด๋ถ๋ ๋ง์๋๋ก ๋ฐ๊ฟ ์ ์๋ ์์ ๊ฐ ์๊ธด๋ค.
Python์๋ ์ด๋ฐ ๊ฐ์ ์ฅ์น๊ฐ ์๋ค. 4๋ฒ์์ ๋ณธ _prefix์ฒ๋ผ ํจํค์ง ์ฐจ์์์๋ โ๋ด๋ถ์ฉโ์ด๋ผ๋ ์ ํธ๋ฅผ ์ค ์๋ ์์ง๋ง, ๋ค๋ฅธ ์ฝ๋๊ฐ ๊ตณ์ด importํ๊ฒ ๋ค๋ฉด ๋ง์ ๋ฐฉ๋ฒ์ด ์๋ค. Go์ internal/์ ํด๋ ์ด๋ฆ ํ๋๋ก ๊ทธ ๊ฒฝ๊ณ๋ฅผ ์ปดํ์ผ๋ฌ๊ฐ ์ง์ผ ์ค๋ค.
7. ์์กด์ฑ ๊ด๋ฆฌ
์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค๋ฃจ๋ ๋ช
๋ น์ 01ํธ์ go get/go install ํ์ ์ด์ด์ง๋ค. ์ฌ๊ธฐ์๋ ์์กด์ฑ ๊ด๋ฆฌ์ ์ด์ ์ ๋ง์ถ๋ค.
์ถ๊ฐ์ ์ ๋ฆฌ
# ์์กด์ฑ ์ถ๊ฐ โ go.mod์ go.sum์ ๊ธฐ๋ก๋๋ค
go get github.com/gin-gonic/gin
# ์์กด์ฑ ์ ๋ฆฌยท๋๊ธฐํ โ ์ฝ๋๊ฐ ์ค์ ๋ก ์ฐ๋ ๊ฒ์ ๋ง์ถ๋ค
go mod tidygo get์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๊ณ , go mod tidy๋ ์ฝ๋๋ฅผ ํ์ด ์ค์ ๋ก importํ๋ ๊ฒ๋ง ๋จ๊ธฐ๊ณ ๋น ์ง ๊ฑด ์ฑ์ด๋ค. ์ ์ฐ๋ ์์กด์ฑ์ go.mod์์ ๋น ์ง๊ณ , importํ๋๋ฐ ๋น ์ง ๊ฑด ์ถ๊ฐ๋๋ค. ์์
์ ๋ง์น ๋ค go mod tidy๋ฅผ ๋๋ ค ์ํ๋ฅผ ๋ง์ถ๋ ๊ฒ ์ต๊ด์ด๋ค.
๋ฒ์ ํ์ธ๊ณผ ์ ๊ทธ๋ ์ด๋
# ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์ ๋ชฉ๋ก ํ์ธ
go list -m -versions github.com/gin-gonic/gin
# ํน์ ๋ฒ์ ์ง์
go get github.com/gin-gonic/gin@v1.10.0
# ๋ง์ด๋ยทํจ์น๊น์ง ์ต์ ์ผ๋ก ์
๊ทธ๋ ์ด๋
go get -u github.com/gin-gonic/gin
# ํจ์น ๋ฒ์ ๋ง ์ฌ๋ฆฌ๊ธฐ(๋ ๋ณด์์ )
go get -u=patch github.com/gin-gonic/gingo.sum์ ์ญํ
go get์ ํ๋ฉด go.mod์ ๋ฒ์ ์ด, go.sum์ ๊ทธ ๋ฒ์ ์ ์ฒดํฌ์ฌ์ด ๊ธฐ๋ก๋๋ค. go.sum์ ๋ฐ์ ์์กด์ฑ์ด ์๋ณ์กฐ๋์ง ์์๋์ง ๊ฒ์ฆํ๋ ์ ๊ธ ์ญํ ์ ํ๋ค. Python์ uv.lock์ด๋ requirements.txt์ ํด์ ํ๊ณผ ๋น์ทํ ์์น๋ค. ๋ ํ์ผ ๋ชจ๋ ๋ฒ์ ๊ด๋ฆฌ์ ์ปค๋ฐํ๋ค.
Python๊ณผ ๋์์ ์ ๋ฆฌํ๋ฉด ์ด๋ ๋ค.
| Go | Python(uv) | ์ฉ๋ |
|---|---|---|
go get <pkg> | uv add <pkg> | ์์กด์ฑ ์ถ๊ฐ |
go mod tidy | uv sync | ์ค์ ์ฌ์ฉ์ ๋ง๊ฒ ์ ๋ฆฌยท๋๊ธฐํ |
go get -u <pkg> | uv lock --upgrade-package <pkg> | ์ ๊ทธ๋ ์ด๋ |
go.mod + go.sum | pyproject.toml + uv.lock | ์์กด์ฑ ๋ช ์ธ + ์ ๊ธ |
๋ฒค๋๋ง์ ์ง๊ธ์ ๋น์ ํธ
์์กด์ฑ์ ์ ์ฅ์ ์
vendor/ํด๋์ ๋ณต์ฌํด ๋ฃ๋ ๋ฒค๋๋ง๋ ๊ฐ๋ฅํ๋ค(go mod vendor). ๋ค๋ง ๋ชจ๋ ์บ์์go.sum๊ฒ์ฆ์ด ์๋ฆฌ์ก์ ์ง๊ธ์ ํน์ํ ์ํฉ(ํ์๋ง ๋น๋ ๋ฑ)์ด ์๋๋ฉด ์ ์ฐ์ง ์๋๋ค. ๊ธฐ๋ณธ์ ๋ชจ๋ ์บ์์ ๋งก๊ธด๋ค.
8. ๋ชจ๋ ๊ตฌ์ฑ(ํ๋ก์ ํธ ๋ ์ด์์)
์ ํด์ง ์ ๋ต ๊ตฌ์กฐ๊ฐ ๊ฐ์ ๋์ง๋ ์์ง๋ง, ๊ท๋ชจ์ ๋ฐ๋ผ ์๋ฆฌ์ก์ ๊ด๋ก๊ฐ ์๋ค.
์์ผ๋ฉด ๋จ์ผ ํจํค์ง
์ฝ๋๊ฐ ์์ผ๋ฉด ํด๋๋ฅผ ๋๋์ง ์๊ณ ๋ฃจํธ์ ํ์ผ ๋ช ๊ฐ๋ก ๋๋ค. package main ํ๋๋ก ์ถฉ๋ถํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋ฏธ๋ฆฌ ํด๋๋ถํฐ ์ชผ๊ฐ๋ ๊ฑด ๊ณผํ๋ค.
myproj/
โโโ go.mod
โโโ main.go
โโโ helper.go์ฌ๋ฌ ๋ฐ์ด๋๋ฆฌ๋ cmd/
์คํ ํ์ผ์ ์ฌ๋ฟ ๋ง๋ ๋ค๋ฉด(์: ์๋ฒ์ CLI ๋๊ตฌ), ๋ฃจํธ์ cmd/ ํด๋๋ฅผ ๋๊ณ ๋ฐ์ด๋๋ฆฌ๋ง๋ค ํ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
myproj/
โโโ go.mod
โโโ cmd/
โ โโโ server/
โ โ โโโ main.go // ์๋ฒ ๋ฐ์ด๋๋ฆฌ
โ โโโ cli/
โ โโโ main.go // CLI ๋ฐ์ด๋๋ฆฌ
โโโ internal/ // ๊ณต๊ฐํ์ง ์์ ๋ด๋ถ ์ฝ๋
โโโ pkg/ // ์ธ๋ถ์ ๊ณต๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋(ํ์ํ ๋๋ง)internal/โ ์ด ๋ชจ๋ ์์์๋ง ์ฐ๋ ์ฝ๋(6๋ฒ ์ฐธ๊ณ ). ์ธ๋ถ import ์ฐจ๋จpkg/โ ๋ค๋ฅธ ๋ชจ๋์ด ๊ฐ์ ธ๋ค ์จ๋ ๋๋ ๊ณต๊ฐ ์ฝ๋. ํ์ํ ๋๋ง ๋ง๋ ๋ค
pkg/๋ ์๋ฌด๊ฐ ์๋๋ค. ๊ณต๊ฐํ ๊ฒ ์์ผ๋ฉด ๋ง๋ค์ง ์๋๋ค.
์ํ ์์กด์ฑ์ ์ปดํ์ผ ์๋ฌ
ํจํค์ง A๊ฐ B๋ฅผ importํ๊ณ B๊ฐ ๋ค์ A๋ฅผ importํ๋ฉด, Go๋ ์ด๋ฅผ ์ํ ์์กด์ฑ์ผ๋ก ๋ณด๊ณ ์ปดํ์ผ์ ๊ฑฐ๋ถํ๋ค. Python์ ๋ฐํ์์ ์ํ import๋ฅผ ์ด๋ ์ ๋ ํ์ฉํ์ง๋ง, Go๋ ์ปดํ์ผ ๋จ๊ณ์์ ๋ง๋๋ค. ์ํ์ด ์๊ธฐ๋ฉด ๋ณดํต ๊ณตํต ๋ถ๋ถ์ ์ 3์ ํจํค์ง๋ก ๋นผ์ ํผ๋ค.
init ํจ์์ blank import๋ ์ ์
ํจํค์ง์๋ init ํจ์๋ฅผ ๋ ์ ์๋๋ฐ, ์ด ํจ์๋ ํจํค์ง๊ฐ ๋ก๋๋ ๋ ์๋์ผ๋ก ํ ๋ฒ ์คํ๋๋ค. ํธํด ๋ณด์ด์ง๋ง ์คํ ์์๊ฐ ์ฝ๋์ ๋๋ฌ๋์ง ์์ ํ๋ฆ์ ์ถ์ ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค. ๊ฐ๋ฅํ๋ฉด ๋ช
์์ ์ธ ์ด๊ธฐํ๋ฅผ ์ฐ๊ณ init์ ์ ์ ํ๋ ๊ฒ ์ข๋ค.
blank import๋ ๊ทธ init๋ง ์คํ์ํค๋ ค๊ณ ์๋ณ์ ์์ด ํจํค์ง๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ด๋ค.
import _ "github.com/lib/pq" // ํจํค์ง์ init๋ง ์คํ(๋๋ผ์ด๋ฒ ๋ฑ๋ก ๋ฑ)๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ ๋ฑ๋ก์ฒ๋ผ ์ ํด์ง ํจํด์์๋ง ์ฐ๊ณ , ์ผ๋ฐ์ ์ธ ์์กด์ฑ ์ฐ๊ฒฐ์๋ ์ฐ์ง ์๋๋ค.
Python ๊ฐ๋ฐ์๋ฅผ ์ํ ํ ์ค ์์ฝ
Go์์ ์ฝ๋๋ฅผ ๋๋๊ณ ๋ฌถ๋ ๋จ์๋ ํด๋(ํจํค์ง)์
go.mod(๋ชจ๋)๋ค. ๋์๋ฌธ์๋ก ๊ณต๊ฐ ๋ฒ์๋ฅผ ์ ํ๊ณ , import ๊ฒฝ๋ก๋ ๋ชจ๋ ์ด๋ฆ์์ ์ถ๋ฐํ๋ค โ Python์ฒ๋ผ ์๋ฌด ํ์ผ์ด๋ ๋์ด์ค๋ ๋์ , ๊ฒฝ๊ณ๋ฅผ ์ปดํ์ผ๋ฌ๊ฐ ์ง์ผ ์ค๋ค.
์ฌ๊ธฐ๊น์ง๊ฐ ๋ชจ๋๊ณผ ํจํค์ง์ ํฐ ๊ทธ๋ฆผ์ด๋ค. ์ธํฐํ์ด์ค๋ 07ํธ, ์ค๋ฅ ์ฒ๋ฆฌ๋ 08ํธ์์ ๋ค๋ค๊ณ , ์์ผ๋ก๋ ๊ณ ๋ฃจํด๊ณผ ๋์์ฑ(๊ณ ๋ฃจํด ์ค์ผ์ค๋ง, ์ฑ๋), ์ ๋ค๋ฆญ์ฒ๋ผ ๋ ๊น์ ์ฃผ์ ๋ฅผ ๋ณ๋ ํธ์์ ๋ค๋ฃฌ๋ค. ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ฉ๋ฒ์ด ๊ถ๊ธํ ๋๋ pkg.go.dev์์ ์ฐพ์ผ๋ฉด ๋๋ค. ๊ณต๊ฐ๋ ๋ชจ๋์ด ์๋์ผ๋ก ์ธ๋ฑ์ฑ๋์ด ์์ด, ํจํค์ง์ ๊ณต๊ฐ ์๋ณ์์ ๋ฌธ์๋ฅผ ๋ฐ๋ก ํ์ธํ ์ ์๋ค.