Computer_Language/GO

[Go] 10. Go(golang)의 익명 함수(Anonymous function)

Joo-Topia 2019. 11. 1. 11:36

이전 공부에서 golang의 함수에 대해서 정리를 했었다.

오늘 정리할 내용은 익명 함수에 관한 내용이다.

파이썬에서 Lambda와 비슷한 맥락이라고 봐도 될 것 같다.

 

Go에서 익명 함수란?


익명 함수는 말 그대로 이름이 없는 함수이다.

함수는 하나의 큰 프로그램을 여러 부분으로 나누고, 여러 상황에서 여러 차례 호출할 수 있으며 일부분을 수정하기 쉽다는 장점을 가진다.

그렇다면 익명함수는 어떤 녀석이고 어떻게 호출할까?

익명함수는 그 자리에서 만들고 바로 그 자리에서 실행할 수 있다는 장점이 있다. 사실 익명 함수의 쓰임새는 말로 설명하는 것보다 직접 상황이 돼봐야 이해할 수 있을 것이다.
(링크 - 실제로 내가 파이썬에서 익명 함수를 사용했던 경우이다.)

Go에서 익명 함수의 형태는 함수의 이름만 없고 그 외에 형태는 동일하다. 그리고 함수의 선언이 끝난 뒤 바로 괄호 연산자를 사용하여 호출할 수 있다.

 

기본 문법


package main

import "fmt"

func main() {
    func() {
        fmt.Println("안녕하세요 익명함수입니다.")
    }()

    func(a int, b int) {
        fmt.Println(a, "와", b, "를 입력받은 무명 함수입니다.")
    }(3, 4)
}

 

변수에 익명 함수로 초기화한다면, 변수 이름을 함수처럼 사용할 수 있는 기능도 제공한다.

package main

import "fmt"

func main() {
    FuncName := func(a int, b int) int {
        fmt.Println("변수에 ", a, "와", b, "를 더해주는 익명함수를 대입했습니다.")
        return a + b
    }

    fmt.Println(FuncName(1, 2))
    fmt.Println(FuncName(3, 4))
}

 

마무리


간단하게 익명 함수에 대해 정리하는 시간이었다.

취업 준비 때문에 개인적인 공부 시간이 점점 줄고 있다. 괴롭다..

*구름 edu의 바로 실행해보면서 배우는 Go Lang"을 수강 후 정리한 내용입니다.
소스코드는 깃허브 저장소를 참고!