Golang의 프로젝트 디렉토리 구조에는 필수 표준이 없지만 코드를 더 잘 구성하고 관리하기 위해 커뮤니티에서 일부 합의와 모범 사례가 형성되었습니다. 다음은 일반적인 Golang 프로젝트 디렉터리 구조의 예입니다.
/myproject
├── /cmd
| ├── /app
| | └── main.go
| └── /anotherapp
| └── main.go
|
├── /pkg
| ├── mypackage1
| | ├── file1.go
| | └── file2.go
| └── mypackage2
| ├── file1.go
| └── file2.go
|
├── /internal
| ├── myinternalpackage
| | ├── file1.go
| | └── file2.go
|
├── /api
| └── api_definitions.proto
|
├── /web
| ├── 정적
| ├── 템플릿
| └── main.go
|
├── /scripts
├── /configs
├── /build
├── /deployments
├── /test
├── 이동합니다. 모드
└── go.sum
이 디렉토리 구조를 설명하십시오.
- `/cmd`: 기본 애플리케이션 코드가 포함되어 있습니다. 각 애플리케이션에는 이 디렉터리 아래에 `/cmd/app`, `/cmd/anotherapp`과 같은 별도의 하위 디렉터리가 있어야 합니다. 각 하위 디렉터리에는 일반적으로 애플리케이션을 시작하는 데 사용되는 'main.go' 파일이 포함되어 있습니다.
- `/pkg`: 라이브러리 코드가 포함되어 있으며 다른 프로젝트에서 참조할 수 있습니다. 이러한 라이브러리는 재사용이 가능해야 하며 특정 애플리케이션과 독립적이어야 합니다.
- `/internal`: `/pkg`와 유사하지만 여기의 코드는 현재 프로젝트에만 표시되며 다른 프로젝트에서 가져올 수 없습니다. 이는 내부 구현의 캡슐화를 보장합니다.
- `/api`: 프로토콜 버퍼 파일과 같은 API 정의가 포함되어 있습니다.
- `/web`: 정적 파일, 템플릿, 웹 애플리케이션의 기본 코드 등 웹 관련 코드가 포함되어 있습니다.
- `/scripts`: 스크립트와 도구를 실행하는 장소가 포함되어 있습니다.
- `/configs`: 애플리케이션 구성을 위한 구성 파일이 포함되어 있습니다. `/build`: 빌드 스크립트와 생성된 실행 파일이 포함되어 있습니다.
- `/deployments`: 배포 스크립트와 구성 파일이 포함되어 있습니다.
- `/test`: 테스트 코드가 포함되어 있습니다.
- `go.mod` 및 `go.sum`: 프로젝트 종속성을 관리하는 데 사용되는 Go 모듈용 구성 파일입니다.
이는 단지 예시일 뿐이며, 실제로 특정 프로젝트의 디렉토리 구조는 프로젝트의 규모와 성격, 팀의 선호도에 따라 달라질 수 있습니다. 그러나 몇 가지 일반적인 디렉터리 구조와 모범 사례를 따르면 코드를 더 읽기 쉽고 유지 관리하기 쉽게 만드는 데 도움이 될 수 있습니다.