hakeの日記

Windows環境でプログラミングの勉強をしています。

Go言語 - 関数を引数にする関数

関数MyMapIntの第一引数は、一つのintを引数にして、intを返す関数。

package main

import (
	"fmt"
)

func MyMapInt(fn func(int) int, sl []int) (ret []int) {
	ret = make([]int, 0, len(sl))
	for _, n := range sl {
		ret = append(ret, fn(n))
	}
	return
}

func twice(x int) int {
	return x*2
}

func square(x int) int {
	return x*x
}

func main() {
	a := []int{1, 2, 3, 4, 5}
	fmt.Println(MyMapInt(twice,  a)) //-> [2 4 6 8 10]
	fmt.Println(MyMapInt(square, a)) //-> [1 4 9 16 25]
}