init関数を使うと、パッケージの初期化など、他の方法では実現が難しいことができます。
本記事では、Golangのinit関数について深ぼって解説していきます。
Golangのinit関数とは
init関数は、引数を取らず、何も返さない関数です。
この関数は、パッケージがインポートされた後に実行され、実行順序を維持します。
つまり、1つのファイルに複数のinit関数を定義しても、順番を守って次々と呼び出されるのです。
Golangにおけるinit関数の使い方
Goのinit関数は、そのファイル内で他のすべてのことを行う前に、やりたいタスクを行うために使われるべきものです。つまり、初期化のようなタスクに適しているのです。
package main
import (
"fmt"
)
func init() {
fmt.Println("初めに実行される")
}
func main() {
fmt.Println("Hello, World")
// 初めに実行される
// Hello, World
}
init関数の並び順
init関数の順番が重要で、init関数が宣言された順に実行されます。
そして、全てのinit関数が実行された後にmain関数の処理が実行されます。
以下はその方法を示す例です。
package main
import (
"fmt"
)
func init() {
fmt.Println("1番目")
}
func init() {
fmt.Println("2番目")
}
func main() {
fmt.Println("Hello, World")
}
func init() {
fmt.Println("3番目")
}
// 出力結果:
// 1番目
// 2番目
// 3番目
// Hello, World
init関数の1つがmainの後に宣言されていても、mainの前に実行され、順序が維持されていることが分かりますね。
init関数が便利な理由とは
init関数は、パッケージの他の関数の直前に実行されるため、宣言順を維持して実行するのに非常に有用です。
これは、安定した実行の流れを維持するプログラムを作成するのに役立ちます。