Go init 함수에 대한 자세한 설명
각 패키지를 초기화한 후 init() 함수가 자동으로 실행되며, 실행 우선순위는 메인 함수의 실행 우선순위보다 높습니다. [관련 권장 사항: Go 비디오 튜토리얼]
init 함수는 일반적으로 다음 용도로 사용됩니다. 사용하다 먼저 초기화해야 하는 가져온 패키지입니다. 초기화는 항상 단일 스레드에서 패키지 종속성 순서대로 수행됩니다. 이는 아래와 같이 Golang의 런타임 시스템에 의해 제어됩니다.
initial.go
package main import "fmt" var _ int64=s() func init(){ fmt.Println("init function --->") } func s() int64{ fmt.Println("function s() --->") return 1 } func main(){ fmt.Println("main --->") }
패키지를 여러 번 import하더라도 초기화는 한 번만 하면 됩니다.
Features
init 함수는 매개변수를 전달할 필요도 없고 값을 반환할 필요도 없습니다. main과 달리 init은 선언되지 않으므로 참조할 수 없습니다. package main
import "fmt"
func init(){
fmt.Println("init")
}
func main(){
init()
}
초기화 함수의 일반적인 예는 초기 표현식의 값을 설정하는 것입니다.각 소스 파일에는 하나 이상의 init 함수가 포함될 수 있으며, 각 소스 파일에 적힌 "행진의 길"에는 하나의 init 함수만 포함될 수 있다는 점을 기억하세요. 이는 약간 다르므로 다음 검증을 진행하세요.
package main import "fmt" func init(){ fmt.Println("init 1") } func init(){ fmt.Println("init2") } func main(){ fmt.Println("main") } /* 实施结果: init1 init2 main */로그인 후 복사
위의 예에서 각 소스 파일에 여러 개의 init 함수가 포함될 수 있음을 알 수 있습니다.
var precomputed=[20]float64{} func init(){ var current float64=1 precomputed[0]=current for i:=1;i<len(precomputed);i++{ precomputed[i]=precomputed[i-1]*1.2 } }
Go 패키지 가져오기 규칙의 부작용
Go는 매우 엄격하며 사용되지 않는 패키지에 대한 참조를 허용하지 않습니다. 그러나 때로는 일부 초기화를 수행하기 위해 init 함수를 호출하기 위해 패키지를 참조하는 경우도 있습니다. 빈 식별자(즉, 밑줄)의 목적은 이 문제를 해결하는 것입니다.import _ "image/png"
undefined:init
요약
위 내용은 이 글의 전체 내용입니다. 이 글의 내용이 귀하의 연구나 업무에 참고가 되기를 바랍니다.
원본 주소: https://developpaper.com/detailed-explanation-of-init-function-in-go-언어/번역 주소: https://learnku.com/go/t/47178프로그래밍 관련 지식을 더 보려면
프로그래밍 비디오를 방문하세요! !
위 내용은 Golang의 init() 함수를 분석하는 기사의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!