高階関数(こうかいかんすう)とは、第一級関数をサポートしているプログラミング言語において、関数(手続き)を引数にしたり、あるいは関数(手続き)を戻り値とするような関数
です。
高階関数を使うと複雑なプログラムが書けます。
・関数を変数に代入
・関数を引数にする
・関数を戻り値にする
以上3つをやってみた例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
package main import ( "fmt" ) func f1(i int) bool { if i%2 == 0 { return true } return false } func f2() { fmt.Println("あいうえお") } func f3(f func(int) bool, i []int) ([]int, func()) { s := []int{} for _, v := range i { if f(v) { s = append(s, v) } } return s, f2 } func main() { //関数を変数に代入できる even := f1 //型を調べてみる fmt.Printf("%T\n", even) //func(int) bool //適当なスライスを作る s := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} //関数を引数にして渡す 戻り値の一つは関数 r1, r2 := f3(even, s) fmt.Println(r1) //[2 4 6 8 10 12] //戻り値の関数を実行してみる r2() //あいうえお } |