ただの技術メモ

個人備忘録

init関数が呼ばれるタイミング

Effective Goにあります。

変数が初期化された後に呼ばれるようです。

go.dev

init is called after all the variable declarations in the package have evaluated their initializers, and those are evaluated only after all the imported packages have been initialized.

前提として変数の初期化などの処理はbuild対象のpackageのみにしか行われません。

  • まずinit関数の有無に関わらず、build対象のpackageに対して変数の初期化が行われます。

  • 変数が評価された後に、init関数が実行されます。(これももちろんbuild対象のpackageについてのみ実行される)

  • その後、main関数が実行されます。

以下のGo Playgroundをゴニョゴニョすると掴めると思います。

go.dev