[go] Go 언어의 함수

Go 언어는 강력한 함수 기능을 제공하여 코드의 모듈화와 재사용성을 높일 수 있습니다.

함수 정의

Go에서 함수는 func 키워드를 사용하여 정의됩니다.

예시:

func add(a, b int) int {
    return a + b
}

위의 예시에서 add 함수는 두 개의 정수형 인자를 받아들이고, 정수형 값을 반환합니다.

가변 매개변수

Go에서는 가변 개수의 인자를 받을 수 있는 가변 매개변수를 지원합니다.

예시:

func sum(numbers ...int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}

위의 예시에서 sum 함수는 임의의 개수의 정수형 인자를 받아들이고, 그 합을 반환합니다.

익명 함수

익명 함수는 이름이 없는 함수로, 변수에 할당되거나 다른 함수에 전달될 수 있습니다.

예시:

func main() {
    add := func(a, b int) int {
        return a + b
    }
    result := add(3, 4)
    fmt.Println(result)  // 결과: 7
}

클로저

클로저는 외부 변수를 참조하여 내부에 익명 함수를 정의하는 것을 의미합니다.

예시:

func multiplier(x int) func(int) int {
    return func(y int) int {
        return x * y
    }
}

func main() {
    double := multiplier(2)
    triple := multiplier(3)
    fmt.Println(double(5))  // 결과: 10
    fmt.Println(triple(5))  // 결과: 15
}

위의 코드에서 multiplier 함수는 클로저를 반환하며, 클로저는 외부 변수 x를 참조하여 계산을 수행합니다.

함수는 Go 언어에서 중요한 개념이므로, 함수를 효과적으로 활용하여 모듈화된 코드를 작성하고 유지보수하기 위해 자세히 이해하는 것이 중요합니다.