프로그램 실행
프로그램 실행
프로그램이 실제로 어떻게 돌아가는지는 결국 두 가지에 달려 있어요. 하나는 완전한 프로그램이 어떤 상태에서 시작하는지, 다른 하나는 실행이 끝나는 조건이 뭔지예요. 여기서는 그 시작과 끝의 규칙을 하나씩 짚어볼게요.
출처: Go Specification
본문
완전한 프로그램은 import되지 않은 단 하나의 패키지 — 이걸 메인 패키지(main package)라고 불러요 — 를, 그 패키지가 가져오는(import) 모든 패키지들과 (전이적으로, transitively) 연결(link)해서 만들어져요. 메인 패키지는 반드시 패키지 이름이 main이어야 하고, 인자를 받지도 않고 값을 반환하지도 않는 함수 main을 선언해야 해요.
func main() { … }
프로그램 실행은 프로그램 초기화로 시작해서, main 패키지 안의 함수 main을 호출하는 것으로 이어져요. 그 함수 호출이 반환(return)되면 프로그램은 종료돼요. 이때 main이 아닌 다른 goroutine들이 끝날 때까지 기다리지는 않아요.
더 알아보기
- 프로그램 초기화 — 실행이 시작되기 전에 패키지들이 어떤 순서로 초기화되는지 Program initialization에서 확인할 수 있어요.
- 메인 패키지 — 프로그램의 진입점 역할을 하는 패키지로, 위 규칙에서 패키지 이름
main과 함수main의 자격을 정확히 짚었어요. - goroutine의 수명 —
main이 반환되면 다른 goroutine의 완료를 기다리지 않고 프로그램이 끝난다는 점은, 실행 중인 goroutine을 두고 종료되는 동작을 이해할 때 핵심이 돼요.