투케이2K

19. (Go Lang) [Mac Os] Go 문법 : 기본 function 함수 생성 수행 - 클로저 (Closure) 본문

Go Lang (Go 언어)

19. (Go Lang) [Mac Os] Go 문법 : 기본 function 함수 생성 수행 - 클로저 (Closure)

투케이2K 2024. 2. 16. 21:39

[개발 환경 설정]

개발 언어 : Go

 

[소스 코드]

package main

import "fmt"

func main() {

	// [변수 선언]
	var next_result = 0
	var another_result = 0

	// [클로저 (Closure) 호출 수행]
	/*
		1) Closure 는 함수 바깥에 있는 변수를 참조하는 함수값 (function value) 을 의미합니다
		2) 만약 anotherNext := nextValue()와 같이 새로운 Closure 함수값을 생성한다면, 변수 i는 초기 0을 갖게 되므로 다시 1부터 카운팅 한다
	*/

	next := nextValue()

	next_result = next() // 1
	next_result = next() // 2

	anotherNext := nextValue()     // 다시 시작
	another_result = anotherNext() // 1

	// [로그 출력 실시]
	fmt.Println("")
	fmt.Println("----------------------------------------------")
	fmt.Println("[로그 출력 수행]")
	fmt.Println("----------------------------------------------")
	fmt.Println("next_result : ", next_result)
	fmt.Println("another_result : ", another_result)
	fmt.Println("----------------------------------------------")
	fmt.Println("")
}

func nextValue() func() int {
	i := 0
	return func() int {
		i++
		return i
	}
}
 

[결과 출력]

 

 

반응형
Comments