Go lang - 8 : 익명 함수

4869 단어 go langgo lang

익명함수

함수 내부에서 새로운 함수를 정의해서 변수로 할당해서 반환할 수 있다.
이렇게 이름이 없는 함수는 '익명 함수'라고 불린다.
두 내용을 합쳐보자

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

좋은 웹페이지 즐겨찾기