PHpullh
학습 라이브러리/Go/프로젝트 디렉토리 구조

GO · Hello World

프로젝트 디렉토리 구조

Go 프로젝트의 표준 디렉토리 구조. cmd/, internal/, pkg/ 패턴이 커뮤니티 표준입니다.

Hello World입문project-structurecmdinternalpkg

핵심 설명

Go 프로젝트의 표준 디렉토리 구조. cmd/, internal/, pkg/ 패턴이 커뮤니티 표준입니다.

Go code

package main

import "fmt"

// 권장 프로젝트 구조:
// myapp/
// ├── cmd/
// │   └── server/
// │       └── main.go       // 진입점
// ├── internal/
// │   ├── handler/          // HTTP 핸들러
// │   ├── service/          // 비즈니스 로직
// │   └── repository/       // 데이터 접근
// ├── pkg/                  // 외부 공개 패키지
// ├── go.mod
// └── go.sum

func main() {
	fmt.Println("cmd/      → 실행 파일 진입점")
	fmt.Println("internal/ → 외부 import 불가 (캡슐화)")
	fmt.Println("pkg/      → 외부에서 import 가능")
}

학습 팁

internal/ 디렉토리는 Go 컴파일러가 강제하는 접근 제한입니다. 외부 모듈에서 절대 import할 수 없으므로 내부 구현을 안전하게 숨길 수 있습니다.

주의할 점

모든 코드를 main 패키지에 넣으면 테스트와 재사용이 어렵습니다. 비즈니스 로직은 별도 패키지로 분리하세요.

자주 묻는 질문

프로젝트 디렉토리 구조란 무엇인가요?

Go 프로젝트의 표준 디렉토리 구조. cmd/ , internal/ , pkg/ 패턴이 커뮤니티 표준입니다.

프로젝트 디렉토리 구조 학습 시 주의할 점은 무엇인가요?

모든 코드를 main 패키지에 넣으면 테스트와 재사용이 어렵습니다. 비즈니스 로직은 별도 패키지로 분리하세요.