목차
GOROOT
go 가 설치된 경로
go와 관련된 실행파일, sdk 등이 위치하는 곳
GOPATH
현재 내가 만들고 있는 go 프로그램의 경로 (working directory)
패키지, 소스 파일 등이 위치
기본 구조
- bin
- 실행 파일이 위치
- pkg
- 컴파일된 패키지의 오브젝트 파일이 위치
- src
- 소스 파일이 위치
따라서, 프로젝트 경로도
GOPATH/src 안에 존재해야 하고
import한 라이브러리(모듈)의 소스 파일들도 여기 존재하게 된다
이런 단점을 해소하고
의존성을 관리해주기 위해 Go 버전 1.11 이후부터는
Go Modules을 사용할 수 있다
Go Modules
앞서 말한 것처럼 go modules 기능을 이용한다면
GOPATH/src 외부에 워크 스페이스를 생성할 수 있고
이 기능은 GO111MODULE 라는 환경 변수를 통해 활성화가 가능하며
기본값은 "" 로 되어있다
GO111MODULE
- on
- Go modules 방식
- off
- 기존 GOPATH 방식
- "" or auto
- GOPATH/src 내부 프로젝트
- 기존 GOPATH 방식
- GOPATH/src 외부 프로젝트
- Go modules 방식
- GOPATH/src 내부 프로젝트
사용
go mod init [모듈 이름]
명령을 사용하면 go.mod 파일이 만들어 지고
여기서 사용하는 모듈 이름으로 내 프로젝트의 안의 패키지를 참조할 수가 있다
예를 들어 기존에 GOPATH 방식에서는 GOPATH/src/truebird/golang/module이 워크 스페이스이고 안에 tistory라는 패키지를 참조한다고 하면
라고 선언해야 했지만import "truebird/golang/module/tistory"
- Go Modules 방식에서는
import "모듈 이름/tistory"
로 선언해 사용할 수 있다
go.mod
go.mod 파일에는 import된 패키지들의 정보가
들어가고 이를 통해 의존성을 관리할 수가 있게 된다
'Go' 카테고리의 다른 글
golang 리시버 (0) | 2021.02.14 |
---|---|
Go run, build, install? (0) | 2021.01.20 |
golang 상속? 임베딩? (0) | 2021.01.08 |
댓글