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 サイトの他の関連記事を参照してください。