Golang-8:匿名関数


匿名関数


新しい関数は、関数内で定義され、変数として返されます.
この無名関数を「匿名関数」と呼ぶ.
二つの内容を合わせる
package main

import "fmt"

type BaseNumType func(int) int

func makeAdd(base int) BaseNumType {
	return func(num int) int {	// 여기
		return base + num
	}
}
func makeMul(base int) BaseNumType {
	return func(num int) int {	// 여기
		return base * num
	}
}

func main() {
	twoBaseAdd := makeAdd(2)
	threeBaseAdd := makeAdd(3)
	twoBaseMul := makeMul(3)
	threeBaseMul := makeMul(3)

	for i := 0; i < 3; i++ {
		fmt.Println("add : ", twoBaseAdd(i), threeBaseAdd(i))
		fmt.Println("mul : ", twoBaseMul(i), threeBaseMul(i))
	}
}
mainで作成した4つの変数は関数のように実行されます.(事実上は関数)
他の言語でも匿名関数がよく使われています.
実はよく関数型に開発されているので、早く勉強したいです.

Console