더북(TheBook)

2.5.4 init() 함수

init() 함수는 패키지가 로드될 때 가장 먼저 호출되는 함수로, 패키지의 초기화 로직이 필요할 때 선택적으로 사용하면 된다.

다음과 같이 패키지의 초기화 명령을 init() 함수에 작성해 놓으면 패키지가 로드될 때 초기화 명령이 수행된다.

▼ $GOPATH/src/go-book-sample/ch2/pkg2/main.go

package main
  
import (
    "fmt"
    "go-book-sample/ch2/lib"
)
  
var v rune
  
func init() {
    v = '1'
}
  
func main() {
    fmt.Println(lib.IsDigit(v)) // lib 패키지의 IsDigit 함수 사용
}
  
func IsDigit(c int32) bool {
    return '0' <= c && c <= '9'
}

실행 결과

true

Go 프로그램은 항상 main() 함수로 시작된다. 만약 main 패키지가 다른 패키지를 임포트하고 있으면, 임포트된 각각의 패키지들을 먼저 불러온다. 임포트된 패키지에서 또 다른 패키지를 임포트하고 있으면, 관련된 패키지를 먼저 불러온다. 임포트된 패키지들을 모두 불러온 후에 main() 함수가 실행된다.

그림 2-1에서 각 요소가 호출되는 순서는 다음과 같다.

1. pkg3init() 함수

2. pkg2init() 함수

3. pkg1init() 함수

4. maininit() 함수

5. main() 함수

그림 2-1 호출 순서
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.