Go 프로젝트 디렉터리 구조 이해 (윈도우 환경 기준)
Go를 설치한 후에는 기본적인 환경 변수 설정이 필요합니다. 주요 환경 변수는 세 가지입니다: GOROOT, GOPATH, GOBIN. GOROOT은 Go가 설치된 루트 경로를 지정하며, 일반적으로 윈도우에서는 설치 프로그램에 의해 자동 설정되므로 별도 설정이 필요하지 않습니다. GOPATH는 개발자가 작업하는 공간을 의미하며, 여러 경로를 포함할 수 있습니다. 이 경우 GOBIN은 go install 명령어로 생성된 실행 파일의 저장 위치로 사용됩니다.
실제 프로젝트 예시: 계산기 프로젝트
프로젝트 이름을 calcproj로 정하고, 실행 가능한 프로그램 calc.exe와 독립 라이브러리 구성합니다. 프로젝트 구조는 다음과 같습니다:
calcproj/
├── calc.go
└── lib/
└── less.go
less.go 파일에서는 사용자 정의 타입 Integer를 정의하고, 비교 메서드 Less를 제공합니다:
package lib
type Integer int
func (a Integer) Less(b Integer) bool {
return a < b
}
calc.go는 메인 진입점이며, Less 메서드를 호출하여 결과를 출력합니다:
package main
import (
"fmt"
"lib"
)
func main() {
var a lib.Integer = 3
fmt.Println(a, a.Less(2))
}
src 디렉터리에서 go build calc.go 또는 단순히 go build 명령어를 실행하면 현재 디렉터리에 calc.exe 파일이 생성됩니다. 이후 커맨드라인에서 실행하면 출력 결과는 다음과 같습니다:
3 false
실험과 경험을 통합한 핵심 팁
- 프로젝트 이름은 자유롭게 지정 가능 – 예:
myhello,TxtReader등 - 프로젝트 루트에 반드시
src폴더를 포함해야 함 src를 기준으로main패키지는 바로 아래에 배치하고, 다른 패키지(예: 라이브러리)는 하위 폴더로 분리함. 폴더명이 패키지 이름이 되며, 해당 폴더 내의 모든 파일은 첫 줄에package 패키지명선언이 있어야 함- 명령형 소스 파일(메인 파일) 처리 방식
- 패키지 내에 명령형 파일이 하나뿐이라면, 해당 폴더에서
go build만 실행해도 폴더 이름과 동일한 실행 파일이 생성됨.go install를 사용하면GOPATH/bin에 해당 실행 파일이 배치됨. - 명령형 파일과 라이브러리 파일이 같은 패키지에 함께 존재하면
go build및go install가 제대로 작동하지 않음. - 하나의 패키지 내에 여러 명령형 파일이 존재할 수 있으나, 이 경우
go run으로 개별 실행은 가능하지만go build와go install는 실패함.
- 패키지 내에 명령형 파일이 하나뿐이라면, 해당 폴더에서