Go 프로젝트 구조 설계 시 고려사항

Go 프로젝트 디렉터리 구조 이해 (윈도우 환경 기준)

Go를 설치한 후에는 기본적인 환경 변수 설정이 필요합니다. 주요 환경 변수는 세 가지입니다: GOROOT, GOPATH, GOBIN. GOROOT은 Go가 설치된 루트 경로를 지정하며, 일반적으로 윈도우에서는 설치 프로그램에 의해 자동 설정되므로 별도 설정이 필요하지 않습니다. GOPATH는 개발자가 작업하는 공간을 의미하며, 여러 경로를 포함할 수 있습니다. 이 경우 GOBINgo 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 buildgo install가 제대로 작동하지 않음.
    • 하나의 패키지 내에 여러 명령형 파일이 존재할 수 있으나, 이 경우 go run으로 개별 실행은 가능하지만 go buildgo install는 실패함.

태그: go 프로젝트 구조 패키지 관리 go build go install

7월 7일 17:34에 게시됨