ホームページ >バックエンド開発 >Golang >Go の「init()」関数はいつ実行されるのでしょうか?

Go の「init()」関数はいつ実行されるのでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 22:41:16245ブラウズ

When Exactly Does Go's `init()` Function Run?

init() 関数はいつ実行されますか?

init() 関数は、メイン関数の前に呼び出される Go の特別な関数です。 () パッケージの関数。これは、変数の初期化やその他のセットアップ タスクによく使用されます。しかし、Effective Go の次の文は正確に何を意味しますか:

「そして、最後に、最後にという意味です。init は、パッケージ内のすべての変数宣言が初期化子を評価した後に呼び出され、それらはすべてのインポートされたパッケージの後でのみ評価されます。 "

これは、現在のパッケージおよびインポートされたパッケージ内のすべてのグローバル変数がデフォルト値で初期化された後に init() 関数が実行されることを意味します。初期化の順序は、インポートが宣言された順序ではなく、パッケージ ファイルの字句順序に基づいていることに注意することが重要です。

例:

var GlobalVar1 = 10

func init() {
    GlobalVar1 = 20
}

func main() {
    // GlobalVar1 is 20
}

この例では、GlobalVar1 が 10 に初期化された後に init() 関数が呼び出され、GlobalVar1 の値が 20 にオーバーライドされます。 main() 関数が呼び出されます。

パッケージに main() 関数があるかどうかに関係なく、init() 関数が常に呼び出されることに言及する価値があります。これは、init() 関数を持つパッケージをインポートすると、そのパッケージが独自のパッケージの init() 関数の前に実行されることを意味します。

さらに、単一のパッケージ内で複数の init() 関数を定義できます。パッケージに含まれており、ソース ファイルに表示される順序で実行されます。これにより、複数の初期化タスクを特定の順序で実行できます。

以上がGo の「init()」関数はいつ実行されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。