코딩/GoLang

GoLang 클로저 함수

드리프트 2021. 1. 28. 22:05
728x170

 

 

안녕하세요?

 

고랭의 클로저 함수에 대해 알아 보겠습니다.

 

클로저는 익명 함수(anonymous function)의 특별한 경우입니다.

 

클로저는 함수 본문 외부에 정의 된 변수에 액세스하는 익명 함수입니다.

 

예제를 통해 설명하겠습니다.

 

package main

import "fmt"

func main() {
	l := 20
	b := 30

	func() {
    	// area 라는 int 타입의 변수를 설정합니다.
		var area int
        
        // 이 변수에 l과 b를 이용해 값을 저장합니다.
        // 그런데 l 과 b는 area가 현재 있는 스코프에 없는 변수입니다.
        // 그러나 이 익명 함수는 클로저라는 특별한 케이스로
        // 본문 외부에 정의된 변수인 l과 b에 액세스 가능합니다.
		area = l * b
		fmt.Println(area)
	}()
}

 

 

두번째 예를 보겠습니다.

 

package main

import "fmt"

func main() {
	for i := 10.0; i < 100; i += 10.0 {
    
    	// 함수 본문 내부의 루프 반복마다 변수에 액세스하는 익명 함수입니다.
		rad := func() float64 {
			return i * 39.370
		}()
		fmt.Printf("%.2f Meter = %.2f Inch\n", i, rad)
	}
}

 

그리드형