Package clause
Package clause (패키지 절)
Go의 모든 소스 파일은 패키지 절로 시작해요. 이 절이 바로 그 파일이 어떤 패키지에 속하는지를 정해줘요. 파일을 열었을 때 맨 위에 package math처럼 쓰는 바로 그 부분이죠.
출처: Go Specification
본문
패키지 절은 각 소스 파일의 맨 앞에 오며, 그 파일이 속하는 패키지를 정의합니다. 문법은 아주 단순해요.
PackageClause = "package" PackageName .
PackageName = identifier .
PackageClause는 package 키워드 뒤에 PackageName을 붙인 형태예요. PackageName은 우리가 앞에서 배운 일반적인 identifier 문법을 그대로 따릅니다.
여기서 한 가지 주의할 점이 있어요. PackageName은 blank identifier가 될 수 없어요. 즉 _를 패키지 이름으로 쓸 수는 없다는 거죠.
실제 사용은 이렇게 보여요.
package math
같은 PackageName을 공유하는 파일들의 묶음이 하나의 패키지 구현을 이룹니다. 그리고 구현에 따라 그 패키지의 모든 소스 파일이 같은 디렉터리에 있어야 한다고 요구할 수도 있어요. 물론 대부분의 Go 프로젝트가 이 디렉터리 규약을 따르고 있죠.
더 알아보기
- 같은 파일 안에서 다른 패키지의 기능을 가져다 쓰려면 Import declarations 절에서 다루는
import선언을 쓰게 돼요. - 패키지 안에서 바깥으로 드러나는 이름(exported identifier)이 무엇인지는 Exported identifiers 절에서 확인할 수 있어요.