함수 리터럴
함수 리터럴 (Function literals)
이름 없는 함수가 필요할 때가 있어요. 함수 하나를 값처럼 다루고 싶은데 매번 이름을 지어주긴 번거롭죠. 그럴 때 함수 리터럴(function literal)을 쓰면 됩니다. 이름 없이 함수를 바로 만들어서 변수에 담거나, 곧바로 호출해 버릴 수 있어요.
출처: Go Specification
본문
함수 리터럴은 이름 없는 함수(anonymous function)를 나타냅니다. 함수 리터럴은 타입 파라미터를 선언할 수 없어요.
FunctionLit = "func" Signature FunctionBody .
func(a, b int, z float64) bool { return a*b < int(z) }
함수 리터럴은 변수에 할당하거나 직접 호출할 수 있습니다.
f := func(x, y int) int { return x + y }
func(ch chan int) { ch <- ACK }(replyChan)
함수 리터럴은 클로저(closure)입니다. 즉, 둘러싼 함수에 선언된 변수를 참조할 수 있어요. 그 변수들은 둘러싼 함수와 함수 리터럴 사이에서 공유되며, 접근 가능한 동안 계속 살아 있습니다.
더 알아보기
- 함수 리터럴을 함수값으로 다루는 자세한 내용은 함수 선언을 함께 보면 좋아요.
func키워드의 문법과 함수 시그니처·본문 구성은Signature,FunctionBody문법 요소를 참고하세요.