>백엔드 개발 >Golang >Go의 `init()` 함수는 패키지 초기화에서 어떻게 작동하나요?

Go의 `init()` 함수는 패키지 초기화에서 어떻게 작동하나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-22 08:01:10506검색

How Does Go's `init()` Function Work in Package Initialization?

Go의 Init(): 정확한 설명

Go 프로그래밍 언어로 작업할 때 init()가 어떻게 작동하는지 이해하는 것이 중요합니다. 기능이 작동합니다. 이 함수는 패키지 및 해당 종속성의 초기화 프로세스에서 중요한 역할을 합니다.

Effective Go에서 언급한 바와 같이:

"init는 패키지의 모든 변수 선언이 해당 초기화 프로그램을 평가한 후에 호출됩니다. , 가져온 패키지가 모두 초기화된 후에만 평가됩니다."

이 명령문은 모든 패키지의 변수가 초기화된 후에 init() 함수가 실행됨을 나타냅니다. 초기화되고 가져온 패키지가 모두 초기화된 후입니다. 변수를 초기화한다는 것은 해당 초기화 프로그램을 평가하는 것을 의미합니다.

더 자세히 설명하려면 다음 시나리오를 고려하세요.

var WhatIsThe = AnswerToLife()

func AnswerToLife() int { // 1
    return 42
}

func init() { // 2
    WhatIsThe = 0
}

func main() { // 3
    if WhatIsThe == 0 {
        fmt.Println("It's all a lie.")
    }
}

이 예에서는

  1. AnswerToLife() init() 전에 호출됩니다.
  2. AnswerToLife()는 42를 반환하고 이를 다음에 할당합니다. 그런 다음 WhatIsThe.
  3. init()가 호출되고 WhatIsThe를 0으로 다시 할당합니다.
  4. 마지막으로 main()이 호출되고 "It's all a lie"가 인쇄됩니다.

이는 AnswerToLife()가 init()보다 먼저 실행되고 init()가 실행됨을 보여줍니다. main() 이전에 실행됩니다. 또한 모든 패키지의 종속성 및 변수가 초기화된 후 init()가 변수 값 설정과 같은 모든 초기화 로직을 실행한다는 점을 강조합니다.

init()는 항상 호출된다는 점에 유의하는 것이 중요합니다. main() 함수가 있든 없든 상관없습니다. 따라서 init() 함수가 포함된 패키지를 가져오면 해당 패키지가 실행됩니다. 또한 패키지에는 여러 init() 함수가 있을 수 있으며 파일에 나타나는 순서대로 실행됩니다.

위 내용은 Go의 `init()` 함수는 패키지 초기화에서 어떻게 작동하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.