Go - Module

choko's avatar
Jun 29, 2024
Go - Module
Contents
Module
 

Module

  • Go Module 의 등장으로 코드의 모듈화가 가능해졌다. package의 의존성을 자동으로 관리해줌
    • 노드 진영에서는 npm인 것처럼, go 진영에서는 의존성 라이브러리를 깃허브를 이용해 사용한다.
    • go mod init (A)
      • A 생략 시 모듈명이 폴더명이 된다.
      module A go 1.19
    • go mod init <your-github-url>
    • module github.com/ddr4869/go_study go 1.19
 
  • 각 패키지 네이밍은, 웬만하면 폴더명을 따라가도록 하자.
    • 폴더명과 다를 수 있다. 하지만 코드가 지저분해지기 때문에, 폴더명으로 정해주자.
 
  • 의존성 라이브러리 설치
    • 전역으로 설치하기($GOPATH/pkg)
    • go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
    • 내부 모듈에서 사용하기
    • go get -u google.golang.org/protobuf/cmd/protoc-gen-go@latest
  • go mod tidy, go mod vendor
    • go mod tidy
      • 외부 패키지 사용 시 해당 패키지를 go mod tidy로 쉽게 설치할 수 있다.
    • go mod vendor
      • go module을 사용하기 위해서는 항상 인터넷에 연결되어 있는 상태여야 한다. 인터넷이 불안정하거나, 폐쇄망인 환경에서는 패키지 다운이 불가능 할 수 있다.
      • go mod vendor는 vendor 폴더를 만들고, 그 안에 컴파일 시 필요한 파일들을 모두 집에넣게 된다.
      •  
  • Private 모듈 가져오기
export GOPRIVATE='github.com/{{your private repo}}/'
 
Share article

Tom의 TIL 정리방