Closure

클로저

함수 안에서 익명 함수를 정의해서 바깥쪽 함수에 선언한 변수에도 접근할 수 있는 함수

CODE
RESULT
CODE
a, b := 1, 2
str := "Hello"
result := func () int{ // 익명함수 변수에 초기화
return a + b // main 함수 변수 바로 접근
}()
func() {
fmt.Println(str) // main 함수 변수 바로 접근
}()
fmt.Println(result)
RESULT
Hello
3
package main
import "fmt"
func next() func() int {
i := 0
return func() int {
i += 1
return i
}
}
func main() {
nextInt := next()
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
newInt := next()
fmt.Println(newInt())
}