[go] 함수 타입의 매개변수

Golang은 함수를 일급 시민으로 취급하여 함수를 다른 함수의 인자로 전달할 수 있는 능력을 제공합니다.

이러한 특성을 이용하면 함수 타입의 매개변수를 활용하여 원하는 동작을 가진 함수를 전달할 수 있습니다.

함수 타입 정의하기

우선 함수 타입을 정의해야 합니다.

예를 들어, 정수형 두 개의 매개변수를 받아 정수형 결과를 반환하는 함수 타입을 아래와 같이 정의할 수 있습니다.

type operation func(int, int) int

위에서 operation이라는 새로운 함수 타입을 정의하고, 두 개의 정수형 매개변수를 받아 정수형을 반환하는 함수를 구현할 수 있습니다.

함수 타입으로 매개변수 전달하기

이제 위에서 정의한 operation 함수 타입을 매개변수로 받는 함수를 작성해보겠습니다.

func calculate(x int, y int, op operation) int {
    return op(x, y)
}

위의 코드에서 calculate 함수는 operation 함수 타입을 매개변수로 받으며, 이를 활용하여 xy에 대해 원하는 연산을 수행한 후 결과를 반환합니다.

함수 타입의 매개변수 활용하기

이제 operation 함수 타입을 매개변수로 받는 함수를 호출하면서 실제 함수를 전달하여 원하는 동작을 수행해보겠습니다.

func add(x int, y int) int {
    return x + y
}

func multiply(x int, y int) int {
    return x * y
}

func main() {
    result1 := calculate(5, 3, add)
    result2 := calculate(5, 3, multiply)
    fmt.Println(result1, result2) // 8 15
}

위의 예제에서 addmultiply 함수를 calculate 함수의 매개변수로 전달하여 각각 덧셈과 곱셈을 수행한 결과를 출력합니다.

이처럼 Golang에서 함수 타입의 매개변수를 활용하면 동적인 동작을 지원하고 코드의 재사용성을 높일 수 있습니다.

마무리

함수 타입의 매개변수는 Golang에서 강력한 기능 중 하나로, 보다 유연하고 모듈화된 코드를 작성할 수 있습니다. 함수 타입을 사용함으로써 코드의 가독성을 향상시키고, 유지보수성을 높일 수 있으며, 다양한 동작을 쉽게 적용할 수 있는 장점을 가지고 있습니다.

참고문헌