PHpullh
학습 라이브러리/Go/초기화 순서와 init 함수

GO · 기초 문법

초기화 순서와 init 함수

init() 함수는 패키지 초기화 시 자동 실행됩니다. 패키지 변수 초기화 → init() → main() 순서로 실행됩니다.

기초 문법중급initinitializationpackagestartup

핵심 설명

init() 함수는 패키지 초기화 시 자동 실행됩니다. 패키지 변수 초기화 → init() → main() 순서로 실행됩니다.

Go code

package main

import "fmt"

var global = initGlobal()

func initGlobal() int {
	fmt.Println("1. 패키지 변수 초기화")
	return 42
}

func init() {
	fmt.Println("2. init() 실행")
	// DB 연결, 설정 로드 등
}

func init() {
	// 같은 파일에 여러 init 가능
	fmt.Println("3. 두 번째 init() 실행")
}

func main() {
	fmt.Println("4. main() 실행")
	fmt.Println("global =", global)
}

학습 팁

init()은 같은 파일과 패키지에 여러 개 정의할 수 있으며, 파일 내에서는 위에서 아래로, 파일 간에는 파일명 알파벳 순서로 실행됩니다.

주의할 점

init()에서 무거운 작업(네트워크 호출 등)을 수행하면 테스트와 디버깅이 어렵습니다. 의존성 주입을 고려하세요.

자주 묻는 질문

초기화 순서와 init 함수란 무엇인가요?

init() 함수는 패키지 초기화 시 자동 실행됩니다. 패키지 변수 초기화 → init() → main() 순서로 실행됩니다.

초기화 순서와 init 함수 학습 시 주의할 점은 무엇인가요?

init() 에서 무거운 작업(네트워크 호출 등)을 수행하면 테스트와 디버깅이 어렵습니다. 의존성 주입을 고려하세요.