반응형
Go의 GOPATH는 Go 개발 환경에서 사용자 워크스페이스(workspace) 위치를 지정하는 환경 변수입니다. 다만 Go 1.11 이후 Go Modules 도입으로 역할이 크게 줄어 현재는 주로 캐시와 도구 설치 위치로 사용됩니다.
아래는 사실 기반으로 정확한 구조와 역할입니다.
1. GOPATH 정의
GOPATH는 Go 도구가 사용자 코드, 모듈 캐시, 실행파일을 저장하는 기본 작업 공간 경로입니다.
확인 명령
- go env GOPATH
Windows 기본값
- C:\Users\
\go
Linux / macOS 기본값
- $HOME/go
2. GOPATH 내부 구조
Go는 GOPATH 아래에 세 개의 기본 디렉토리 구조를 사용합니다.
- GOPATH
├── bin
├── pkg
└── src
디렉토리역할
| bin | go install로 빌드된 실행파일 |
|---|---|
| pkg | 컴파일된 패키지 및 모듈 캐시 |
| src | (과거 방식) Go 소스 코드 |
3. Go Modules 이전 (Go 1.10 이하)
과거에는 모든 Go 프로젝트가 반드시 GOPATH/src 안에 있어야 했습니다.
예)
- GOPATH
└── src
└── github.com
└── user
└── project
빌드 시 Go는 다음 경로에서 패키지를 찾았습니다.
- GOPATH/src
- GOROOT/src
즉 Go 개발은 GOPATH 중심 구조였습니다.
4. Go Modules 이후 (Go 1.11+)
Go 1.11에서 Go Modules이 도입되었습니다.
이후 변화
- 프로젝트가 GOPATH 밖에서도 개발 가능
- 의존성은 go.mod로 관리
- 버전 관리가 가능
예)
- E:\project\address-api
- go mod init address-api
이 경우 GOPATH와 무관하게 프로젝트가 동작합니다.
5. 현재 GOPATH의 실제 역할
현재 Go에서는 GOPATH가 다음 용도로 사용됩니다.
1) 모듈 캐시 저장소
다운로드된 모듈이 저장되는 위치
- GOPATH/pkg/mod
예)
- D:\go\pkg\mod
└── github.com
└── go-chi
└── chi@v5.0.8
여러 버전이 동시에 저장됩니다.
2) Go Tool 실행파일 저장
go install로 설치한 도구가 저장됩니다.
예)
- go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
저장 위치
- GOPATH/bin
예)
- D:\go\bin\sqlc.exe
이 경로를 PATH에 추가해야 합니다.
3) 일부 빌드 캐시
Go 빌드 과정에서 일부 캐시가 pkg 아래에 저장됩니다.
6. GOPATH vs GOROOT
항목의미
| GOROOT | Go 설치 경로 |
|---|---|
| GOPATH | 사용자 작업 공간 |
예)
- GOROOT = C:\Program Files\Go
- GOPATH = D:\go
7. GOPATH가 없어도 동작하는 이유
Go는 GOPATH가 설정되지 않으면 기본 경로를 자동 사용합니다.
Windows
- C:\Users\
\go
확인
- go env GOPATH
8. 실제 개발 환경 구조 (권장)
- C:\Program Files\Go → GOROOT
- D:\go → GOPATH
- E:\project → 프로젝트
├── address-api
├── address-batch
└── address-loader
9. Go가 모듈을 찾는 순서
빌드 시 Go는 다음 순서를 사용합니다.
- 현재 프로젝트 (go.mod)
- 모듈 캐시 (GOPATH/pkg/mod)
- 인터넷 다운로드
반응형
'프로그래밍 > Go' 카테고리의 다른 글
| Ubuntu 24.04에서 Go 1.26.1과 VS Code 설치하기 (1) | 2026.07.03 |
|---|---|
| Go 모듈과 패키지 이해하기 (0) | 2026.07.03 |
| VS Code Go 환경 세팅 (0) | 2026.04.14 |
| 우분투 24.04 LTS 서버 Go 1.26.1 설치 (0) | 2026.03.17 |
| 윈도우즈 Go 1.26.1 설치 (0) | 2026.03.16 |
댓글