golangのinit関数の使い方
Go言語では、init()関数はパッケージまたはプログラムを初期化する特別な関数です。各パッケージには1つ以上のinit()関数を含めることができ、プログラムが実行される前に自動的に呼び出されます。init()にはパラメーターと戻り値はありません。
init()関数の主な使い途は2つあります。
- import時に自動実行され、パッケージレベルの変数の初期化、初期化処理の実行、プログラム実行前に実行する必要があるロジックの登録を行うinit()関数をパッケージに定義できます。パッケージ内には複数のinit()関数を定義でき、これらはソースファイル内の順番に実行されます。
- プログラムが実行すると、Goのすべての packages は自動的に import され、各 package の init() 関数が自動的に実行されます。これらの init() 関数は、プログラムレベルの変数を初期化したり、初期化操作を実行したり、プログラムの実行前に必要なロジックを登録したりするために使用できます。
init()関数は、main()関数が実行される前に実行されるため、実行順序に因果関係はありません。また、パッケージ内に複数のinit()関数が存在する場合、実行順序は未定です。
init() 関数の使用方法を示す、コード例を以下に示します。
package main
import "fmt"
func init() {
fmt.Println("Initializing...")
}
func main() {
fmt.Println("Hello, world!")
}
出力を得る
Initializing...
Hello, world!