Golang 카운터 무명 익명 함수 만들기

특정한 처리를 하거나 원하는 처리를 한 경우 숫자를 하나씩 증가하는 변수를 만드는 경우가 있습니다.

증가하는 처리를 +1 이나 ++ 연산자를 사용해서도 할 수 있지만 익명 함수 를 사용해서도 기능을 만들 수 있습니다.

카운터 함수 예제

package main

import "fmt"

func main() {
	errCountFunc := errCount()
	fmt.Println(errCountFunc())
	fmt.Println(errCountFunc())
	fmt.Println(errCountFunc())
	fmt.Println(errCountFunc())
}

func errCount() func() string {
	var count int
	return func() string {
		count++
		return fmt.Sprintf("err count is %d", count)
	}
}

 

결과

err count is 1
err count is 2
err count is 3
err count is 4

 

미리 만들어놓은 errCount 함수에서는 호출될 때마다 변수 count를 1씩 증가시킨 후 출력을 하고 있습니다.

카운터만 해야 하는 경우라면 굳이 함수로 만들 필요는 없겠지만 로그에 출력을 해야 하거나 하는 경우라면 함수로 만들어서 사용하는 것이 편리합니다.

댓글