Go 言語では、関数も型であり、他の型と同様に変数に格納できます。次のコードは、関数変数 f を定義し、fire() という名前の関数を関数変数 f に割り当て、次のように呼び出します。関数変数 f が使用され、実際に fire() 関数が呼び出されます。コードは次のとおりです。
package main
import (
"fmt"
)
func fire() {
fmt.Println("fire")
}
func main() {
var f func()
f = fire
f()
}
コード出力結果:
fire
コードの説明:
- 7 行目では fire() 関数を定義しています。
- 13行目では変数fをfunc()型として宣言していますが、このときのfは通称「コールバック関数」と呼ばれており、このときのfの値はnilとなります。
- 15 行目では、fire() 関数を値として関数変数 f に代入しており、f の値が fire() 関数です。
- 17 行目では、関数変数 f を使用して関数呼び出しを行い、実際に fire() 関数を呼び出します。
「 Go 言語関数変数 – 関数を変数の値として保存します」についてわかりやすく解説!絶対に観るべきベスト2動画
一緒に学ぶGo言語入門 ~その2:パッケージ・変数・関数(前半)~
【Go言語 超入門コース】12.関数 |関数を料理ロボットに例えて説明しました【プログラミング初心者向け入門講座】