[Go 공식문서 한국어 정리] ⑯35. Go 모듈 사용하기
https://go.dev/blog/using-go-modules
[Go 공식문서 한국어 정리] ⑯35. Go 모듈 사용하기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 서론
이 글은 Go 모듈의 기본 사용법을 소개합니다. Go 1.11부터 모듈이 지원되었으며 1.13부터 기본으로 활성화되었습니다.
2. 핵심 개념
• 모듈: go.mod 파일이 있는 패키지들의 집합.
• go.mod: 모듈의 경로와 의존성을 정의.
• go.sum: 모듈 버전의 암호화 해시를 저장해 무결성을 보장.
• 의존성은 시망틱 버전으로 관리됩니다.
3. 주요 내용 상세
3.1 새 모듈 생성
• go mod init example.com/hello를 실행하여 새 모듈을 초기화합니다.
• go.mod에는 module path와 Go 버전이 포함됩니다.
• 서브디렉토리의 패키지는 모듈 경로 + 서브디렉토리 경로의 형태입니다.
3.2 의존성 추가
• 새로운 import를 추가하면 go test나 go build을 실행할 때 자동으로 의존성을 추가합니다.
• 알아서 버전을 선택: 스텍이 아닌 가장 최신 버전.
• go.mod에는 직접적인 의존성만 기록됩니다.
• go list -m all으로 모든 의존성을 확인할 수 있습니다.
3.3 의존성 업그레이드
• go get 패키지명으로 최신 버전으로 업그레이드.
• go get 패키지명@v1.3.1으로 특정 버전을 설정.
• 마이너 버전 업그레이드는 백워드 호환성을 유지해야 합니다.
3.4 새로운 메이저 버전 의존성
• 메이저 버전이 달라지면 모듈 경로도 달라져야 합니다.
• 예: rsc.io/quote/v3는 rsc.io/quote와 달리 모듈 경로에 /v3를 붙입니다.
• 이를 시망틱 임포트 버저닝(semantic import versioning)이라 합니다.
3.5 의존성을 새 메이저 버전으로 업그레이드
• 메이저 버전이 변경되면 API가 바뀌었을 수 있습니다.
• go doc 를 사용해 새로운 API를 확인합니다.
• 기존 코드를 수정하고 go mod tidy를 실행합니다.
3.6 미사용 의존성 제거
• go mod tidy를 실행하면 사용하지 않는 의존성을 제거합니다.
• go build이나 go test는 누락된 의존성을 추가하지만 제거하지는 않습니다.
• go.mod와 go.sum은 버전 관리에 포함되어야 합니다.
4. 실전 활용
• 새로운 프로젝트를 시작할 때 go mod init을 사용합니다.
• 의존성을 추가할 때는 go get을 사용합니다.
• 의존성을 업그레이드할 때도 go get을 사용합니다.
• 미사용 의존성을 정짜할 때는 go mod tidy를 사용합니다.
• go.mod와 go.sum을 사용하여 빌드의 재현성을 보장합니다.
5. 정리
• Go 모듈은 Go의 의존성 관리 시스템입니다.
• go mod init, go get, go mod tidy를 사용해 의존성을 관리합니다.
• 시망틱 버전을 사용하여 버전을 관리합니다.
• 메이저 버전이 달라지면 모듈 경로에 /vN을 붙여야 합니다.
• go.mod와 go.sum은 버전 관리에 포함되어야 합니다.
#Go #Golang #Modules #모듈 #의존성관리 #공식문서

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30