
Go init 関数の詳細説明
各パッケージの初期化後、init() 関数が自動的に実行されます。実行優先順位は次のとおりです。 main関数の実行優先度よりも高い。 [関連する推奨事項: 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 --->")
}実行結果
function s() —>パッケージを複数回インポートしても、初期化一度だけ行う必要があります。init function —>
main —>
特徴
init 関数はパラメータを渡す必要も、値を返す必要もありません。 main とは異なり、init は宣言されていないため、参照できません。package main
import "fmt"
func init(){
fmt.Println("init")
}
func main(){
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 */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"
要約
上記がこの記事の全内容です。この記事の内容があなたの勉強や仕事の参考になれば幸いです。元のアドレス: https://developpaper.com/detailed-explanation-of-init-function-in-go- language/翻訳アドレス: https://learnku .com/go/t/47178プログラミング関連の知識については、
プログラミング ビデオをご覧ください。 !
以上がGolangのinit()関数を分析した記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。