GO · 기초 문법
internal 패키지
internal 디렉토리의 코드는 부모 디렉토리의 하위 패키지에서만 import할 수 있습니다. Go 컴파일러가 강제하는 접근 제한입니다.
기초 문법중급internalpackageaccess-controlencapsulation
핵심 설명
internal 디렉토리의 코드는 부모 디렉토리의 하위 패키지에서만 import할 수 있습니다. Go 컴파일러가 강제하는 접근 제한입니다.
Go code
package main
import "fmt"
// 디렉토리 구조:
// myapp/
// ├── cmd/server/main.go ← internal 사용 가능
// ├── internal/
// │ ├── auth/auth.go ← 외부 import 불가
// │ ├── db/db.go ← 외부 import 불가
// │ └── config/config.go
// └── pkg/api/api.go ← 외부 import 가능
// internal/config/config.go 예시:
// package config
// type Config struct {
// DBHost string
// Port int
// }
func main() {
fmt.Println("internal/ → 모듈 내부에서만 접근")
fmt.Println("pkg/ → 외부에서도 접근 가능")
fmt.Println("컴파일러가 internal 접근 제한을 강제합니다")
}학습 팁
internal 패키지는 API 표면을 줄이고 구현 세부사항을 숨기는 데 효과적입니다. 라이브러리 작성 시 적극 활용하세요.
주의할 점
internal 패키지를 pkg 디렉토리 안에 넣으면 의미가 충돌합니다. internal은 모듈 루트나 cmd 근처에 배치하세요.
자주 묻는 질문
internal 패키지란 무엇인가요?
internal 디렉토리의 코드는 부모 디렉토리의 하위 패키지에서만 import할 수 있습니다. Go 컴파일러가 강제하는 접근 제한입니다.
internal 패키지 학습 시 주의할 점은 무엇인가요?
internal 패키지를 pkg 디렉토리 안에 넣으면 의미가 충돌합니다. internal 은 모듈 루트나 cmd 근처에 배치하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.