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. pkg3의 init() 함수
2. pkg2의 init() 함수
3. pkg1의 init() 함수
4. main의 init() 함수
5. main() 함수
