Q1.
네가 설명해준 내용을 보고 궁금해진 것이 있어.
1. 라이브러리와 패키지는 어떤 관계인거야?
2. 핸들러는 무엇을 하는 대상이지?
A1.
좋은 질문이야! Go를 포함한 대부분의 언어에서 자주 헷갈릴 수 있는 개념인데, 아주 간단하고 확실하게 설명해볼게.
🧱 1. 라이브러리 vs 패키지
📦 패키지 (Package)
- 코드 묶음의 최소 단위야.
- Go에서는 package xxx 라고 파일 맨 위에 써 있는 게 바로 패키지.
- 예: fmt, json, fasthttp, handler 등
- 폴더 하나 = 패키지 하나라고 보면 거의 맞아.
- 하나의 패키지는 여러 .go 파일로 구성될 수 있어.
📚 라이브러리 (Library)
- 여러 개의 패키지를 묶어둔 큰 단위로, 재사용 가능한 코드 집합이야.
- 일반적으로 GitHub 같은 곳에 올라와 있는 오픈소스 프로젝트는 하나의 "라이브러리"라고 보면 돼.
- 예: github.com/valyala/fasthttp는 하나의 라이브러리이고, 그 안에는 여러 패키지(fasthttp, reuseport, 등)가 있을 수 있어.
요약하면:
패키지 = 소스코드 묶음 (폴더 단위)
라이브러리 = 여러 패키지를 포함할 수 있는, 재사용 가능한 코드 모음 (배포 단위)
⚙️ 2. 핸들러 (Handler)
📌 정의
- Go에서 "핸들러"는 요청(request)을 받아서 처리하는 함수야.
- 특히 HTTP 서버에서, 어떤 URL 경로가 호출되었을 때 그 요청을 처리하는 함수를 핸들러라고 해.
예시
func sumApi(ctx *fasthttp.RequestCtx) {
// 클라이언트가 보낸 POST body를 파싱해서
// num1 + num2 값을 계산하고 응답으로 돌려주는 함수
}
이 sumApi가 바로 핸들러 함수야.
즉, 이 함수는 /sum 요청이 들어왔을 때 "그 요청을 처리하는 담당자" 역할을 해.
🔁 정리 요약
| 용어 | 설명 |
| 패키지 | Go 코드 묶음. package로 시작하고, 주로 폴더 단위. |
| 라이브러리 | 여러 패키지를 포함하는 재사용 가능한 코드 모음. GitHub 등에서 배포됨. |
| 핸들러 | HTTP 요청을 받아서 처리하는 함수. /sum 같은 경로와 연결됨. |
더 궁금한 거 있으면 이어서 물어봐도 좋아! 예제도 곁들여줄 수 있어.
'프로그래밍 개념 정리' 카테고리의 다른 글
| 임시 JWT 비교 (0) | 2025.04.11 |
|---|---|
| 상수와 리터럴 차이 (0) | 2025.04.04 |
| 리터럴? Literal? literally? (0) | 2025.04.01 |
| self 인스턴스와 변수의 스코프 (0) | 2025.04.01 |
| 이중 포인터, 포인터 배열 (0) | 2025.03.31 |