한정 식별자
한정 식별자 (Qualified identifiers)
어떤 기능을 쓰려고 할 때, 그 기능이 지금 파일 안이 아니라 다른 패키지에 있는 경우가 있어요. 그럴 때 우리가 쓰는 게 바로 한정 식별자예요. 쉽게 말하면 패키지 이름을 앞에 붙여서 식별자를 가리키는 방식인데, Go 코드 곳곳에서 정말 자주 만나는 문법이라 이번에 확실히 정리해 둘게요.
출처: Go Specification
본문
<식별자 한정(限定)에 대해>
한정 식별자(qualified identifier) 는 패키지 이름을 접두사로 붙여 한정한 식별자예요. 이때 패키지 이름과 식별자 모두 blank이면 안 돼요.
이 문법은 원문에 다음과 같이 정의되어 있어요.
QualifiedIdent = PackageName "." identifier .
첫 부분이 PackageName이고, 그다음에 점 .이 오고, 마지막에 identifier가 오는 구조예요. 그러니까 패키지이름.식별자 모양인 거죠.
한정 식별자는 다른 패키지에 있는 식별자에 접근할 때 쓰는데, 이때 그 패키지는 반드시 import 되어 있어야 해요. 그리고 그 식별자는 exported 상태여야 하고, 해당 패키지의 package block에서 선언되어 있어야 해요. 세 조건이 함께 맞아야 접근할 수 있다는 뜻이에요.
실제로는 이렇게 써요.
math.Sin // denotes the Sin function in package math
math.Sin은 math 패키지의 Sin 함수를 가리키는 거죠. 앞에 math라는 패키지 이름을 붙였으니, 이 식별자는 한정 식별자예요.
더 알아보기
- Export된 식별자(Exported identifiers) — 어떤 식별자가 밖으로 노출될 수 있는지에 대한 규칙이에요. 한정 식별자로 접근하려면 반드시 export된 식별자여야 해요.
- import 선언(Import declarations) — 다른 패키지를 가져오는 방법이에요. 한정 식별자를 쓰기 전에 반드시 이 패키지를 import 해야 해요.
- 선언과 범위(Declarations and scope) — 식별자가 어디까지 보이는지, package block이 무엇인지 더 자세히 볼 수 있어요.