Go 모듈(Go Modules)은 Go 1.11에 도입된 공식 의존성 관리 시스템이다. go.mod 파일로 모듈 경로와 의존성을 선언하고, 시맨틱 버전을 사용한다.
go.mod 구조
module github.com/myuser/myapp
go 1.21
require (
github.com/gin-gonic/gin v1.9.1
github.com/jackc/pgx/v5 v5.5.0
golang.org/x/crypto v0.17.0
)
require (
// 간접 의존성
github.com/bytedance/sonic v1.10.2 // indirect
)
주요 명령어
bash
# 모듈 초기화
go mod init github.com/myuser/myapp
# 의존성 추가
go get github.com/gin-gonic/gin@v1.9.1
# 의존성 정리 (사용 안 하는 것 제거)
go mod tidy
# 벤더 디렉토리 생성
go mod vendor
# 의존성 그래프 출력
go mod graph
# 특정 패키지의 출처 확인
go list -m all
버전 관리
bash
# 최신 버전
go get github.com/foo/bar@latest
# 특정 버전
go get github.com/foo/bar@v1.2.3
# 특정 커밋
go get github.com/foo/bar@abc1234
# 업그레이드 (마이너/패치)
go get -u ./... # 모두 업데이트
go get -u=patch ./... # 패치만 업데이트
v2 이상 메이저 버전
go
// go.mod: module github.com/myuser/lib/v2
// import 경로에 /v2 포함
import "github.com/myuser/lib/v2"
Workspace 모드 (Go 1.18+)
bash
# go.work 파일로 로컬 멀티 모듈 개발
go work init ./moduleA ./moduleB
go work use ./moduleC
# go.work:
# go 1.21
# use ./moduleA
# use ./moduleB
관련 개념