[go] Go 언어에서 함수 리터럴

Go 언어는 함수를 값으로 사용할 수 있는 함수 리터럴을 지원합니다. 함수 리터럴은 익명 함수로서 변수에 할당하거나 다른 함수의 인자로 전달할 수 있습니다. 이를 통해 코드를 더욱 유연하고 모듈화할 수 있습니다.

함수 리터럴의 기본 구조

함수 리터럴은 아래와 같은 기본 구조로 작성됩니다.

func(매개변수) 반환타입 {
    // 함수의 본문
}

함수 리터럴 사용하기

함수 리터럴은 변수에 할당하여 사용할 수 있습니다. 아래 예제는 “Hello, World!”를 출력하는 익명 함수를 선언하고, 이를 변수에 할당하여 호출하는 예시입니다.

package main

import "fmt"

func main() {
    greeting := func() {
        fmt.Println("Hello, World!")
    }
    
    greeting() // 함수 호출
}

변수 greeting에 함수 리터럴을 할당하고, greeting()을 호출하여 함수를 실행합니다.

함수 리터럴을 다른 함수의 인자로 전달하기

함수 리터럴을 다른 함수의 인자로 전달하는 것도 가능합니다. 아래 예제는 calculate 함수를 정의하고 이를 호출하는 방법을 보여줍니다.

package main

import "fmt"

func calculate(a, b int, operation func(int, int) int) int {
    return operation(a, b)
}

func main() {
    result := calculate(10, 5, func(a, b int) int {
        return a + b
    })
    
    fmt.Println(result) // 15
}

calculate 함수는 첫번째 인자와 두번째 인자를 받아서 operation 함수에 전달합니다. operation 함수는 두 수를 더한 값을 반환하도록 정의됩니다.

함수 리터럴을 사용하여 ab를 더하고, 그 결과를 출력합니다.

결론

Go 언어에서는 함수 리터럴을 활용하여 함수를 값으로 다룰 수 있습니다. 이를 통해 코드의 유연성과 모듈화를 높일 수 있습니다. 함수 리터럴은 변수에 할당하여 사용하거나, 다른 함수의 인자로 전달하는 등 다양한 상황에서 활용될 수 있습니다.

더 자세한 내용은 Go 공식 문서를 참고하시기 바랍니다.