🔥 이름 내보내기

196자
3분

Go 언어에서는 이름이 대문자로 시작하면 그 이름을 내보냅니다. 예를 들어, Pizza는 내보내는 이름이고, math 패키지에서 내보내는 Pi도 마찬가지입니다.

반면에 pizzapi는 대문자로 시작하지 않으므로 내보내지 않습니다.

패키지를 가져올 때는 내보낸 이름만 참조할 수 있습니다. "내보내지 않은" 이름은 패키지 외부에서 접근할 수 없습니다.

아래 코드를 실행해 보세요. 오류 메시지를 주목해 보시기 바랍니다.

go
package main
 
import (
    "fmt"
    "math"
)
 
func main() {
    fmt.Println(math.pi)  // math 패키지에서 pi는 내보내지 않은 이름입니다.
}
 
go
package main
 
import (
    "fmt"
    "math"
)
 
func main() {
    fmt.Println(math.pi)  // math 패키지에서 pi는 내보내지 않은 이름입니다.
}
 

오류를 수정하려면 math.pimath.Pi로 이름을 바꾸고 다시 시도해 보세요.

go
package main
 
import (
    "fmt"
    "math"
)
 
func main() {
    fmt.Println(math.Pi)  // math 패키지에서 내보낸 Pi 상수를 사용합니다.
}
 
go
package main
 
import (
    "fmt"
    "math"
)
 
func main() {
    fmt.Println(math.Pi)  // math 패키지에서 내보낸 Pi 상수를 사용합니다.
}
 

이제 코드가 정상적으로 실행되는 것을 확인할 수 있습니다.

Go 언어에서 이름 내보내기 규칙을 정리해 보면 다음과 같습니다.

  • 이름이 대문자로 시작하면 그 이름은 내보냅니다.
  • 이름이 소문자로 시작하면 그 이름은 내보내지 않습니다.
  • 패키지를 가져올 때는 내보낸 이름만 참조할 수 있습니다.
  • 내보내지 않은 이름은 패키지 외부에서 접근할 수 없습니다.

이 규칙을 명심하면 패키지를 설계할 때 어떤 이름을 외부로 공개할지 쉽게 결정할 수 있겠죠?

lecture image

위 다이어그램은 패키지 내에서 내보낸 이름과 내보내지 않은 이름의 접근 가능 범위를 보여줍니다. 내보낸 이름은 패키지 외부에서 접근 가능하지만, 내보내지 않은 이름은 패키지 외부에서 접근할 수 없습니다.

YouTube 영상

채널 보기
인터셉터와 RxJS로 캐시 시스템 구축하기 | NestJS 가이드
API 응답 지연과 복잡한 에러, NestJS 인터셉터로 관리하는 방법 | NestJS 가이드
NestJS 인터셉터에서 map 연산자로 응답을 변환하는 방법 | NestJS 가이드
NestJS 커스텀 데코레이터, createParamDecorator 사용 | NestJS 가이드
함수 객체의 보편적 구성 | 프로그래머를 위한 카테고리 이론
NestJS 커스텀 데코레이터 인자 전달 및 파이프 검증 활용법 | NestJS 가이드
Writer 펑터와 클라이슬리 카테고리 | 프로그래머를 위한 카테고리 이론
관점 지향 로깅 인터셉터 구현 및 전역 바인딩 전략 | NestJS 가이드