Menu
Coddy logo textTech

익명 함수

Coddy의 Golang의 함수와 포인터 코스 레슨 — 19개 중 9번째.

우리가 이미 배운 것은 이름을 가진 함수를 정의하는 방법이며, 함수를 호출해야 할 때 그 이름을 사용합니다. 하지만 이름이 없는 또 다른 유형의 함수가 있으며, 이러한 유형을 익명 함수(anonymous function)라고 부릅니다.

이것은 일반적인 함수처럼 작동하지만 작동 방식에 몇 가지 차이점이 있습니다. 이러한 함수를 사용하면 다른 곳에서 함수를 정의할 필요 없이 직접 동작을 정의할 수 있습니다.

익명 함수를 정의하는 방법의 예를 살펴보겠습니다:

b := func(x, y int) int { return x - y }
fmt.Println(b(100, 50))

여기서 우리는 뺄셈을 수행하는 익명 함수를 저장하는 변수 b를 정의합니다. 함수를 호출할 때는 단순히 변수 이름인 b(100, 50)을 사용합니다.

또한 다른 함수로부터 결과값으로 익명 함수를 받을 수도 있습니다. 예를 들어:

func operation(a int) func(int) int {
    if a == 1 {
        return func(a int) int { return a + 10 }
    } else {
        return func(a int) int { return a * 10 }
    }
}
func main() {
    b := operation(1)
    fmt.Println(b(14))
}

여기서 우리는 operation이라는 일반 함수를 정의하며, 결과(반환 값)는 단순한 값이 아니라 익명 함수<strong>func(int) int</strong>가 됩니다.

반환 값을 변수 b에 할당합니다. operation 함수에 매개변수로 1을 전달했기 때문에, 실행될 블록은 다음과 같습니다:

return func(a int) int { return a + 10 }

이제 익명 함수 b를 호출할 때 정수 값(예: 14)을 전달해야 합니다.

결과는 다음과 같습니다:

24

이것은 a14(<strong>b(14)</strong>)를 전달했을 때 a + 10을 계산한 결과입니다.
 

challenge icon

챌린지

쉬움

세 개의 정수 인자를 받는 익명 함수를 작성하세요.

만약 첫 번째 인자가 마지막 인자보다 크다면 모든 인자의 을 반환하고, 그렇지 않으면 첫 번째 인자와 마지막 인자의 을 반환하세요.

함수의 결과를 result라는 이름의 변수에 저장하세요.

직접 해보기

package main

import "fmt"

func main() {
    // 익명 함수를 정의하고 "result"라는 이름의 변수에 할당하세요.
 
    
    
    // 결과를 출력합니다. 이 부분을 변경하지 마세요!
    fmt.Println("Result:", result(2, 3, 4))
    fmt.Println("Result:", result(8, 3, 4))
}

Golang의 함수와 포인터의 모든 레슨