🔥 이름 내보내기

196자
3분

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

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

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

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

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

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

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

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

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

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

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

lecture image

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