[go] Go 언어에서 콜백 함수와 메소드의 활용

Go 언어는 간결하고 강력한 특징을 가진 프로그래밍 언어입니다. 콜백 함수와 메소드는 Go 언어에서 자주 사용되는 중요한 개념 중 하나입니다. 이번에는 콜백 함수와 메소드의 활용에 대해 알아보도록 하겠습니다.

콜백 함수 (Callback Function)

콜백 함수는 다른 함수에 의해 호출되는 함수를 말합니다. 즉, 함수를 다른 함수에 인수로 전달하여 특정 이벤트가 발생할 때 호출되도록 할 수 있습니다. 이를 통해 비동기적인 프로그래밍이 가능해지며, 이벤트 처리 등 다양한 상황에서 유용하게 활용할 수 있습니다.

Go 언어에서는 함수를 first-class 객체로 다루기 때문에 콜백 함수를 간편하게 정의하고 전달할 수 있습니다. 아래는 콜백 함수를 사용하는 간단한 예제입니다.

package main

import "fmt"

func callback(num int, f func(int)) {
    f(num)
}

func main() {
    callback(10, func(num int) {
        fmt.Println("콜백 함수 호출됨:", num)
    })
}

위 예제에서 callback 함수는 num을 인자로 받고, f라는 함수를 다른 함수로 전달받아 실행합니다. main 함수에서 10과 익명 함수를 인자로 전달하여 콜백 함수를 호출합니다.

메소드 (Method)

메소드는 구조체(Struct)나 타입(Type)에 연결된 함수를 의미합니다. 즉, 특정 구조체나 타입에 대해 동작하는 함수로, 해당 구조체나 타입에 대한 메소드로 사용됩니다. Go 언어에서는 메소드를 정의할 때 func 키워드 앞에 수신자(Receiver)를 명시하여 해당 메소드가 어떤 구조체나 타입에 속하는지를 지정합니다.

메소드는 구조체나 타입과 밀접한 관련이 있으므로, 해당 구조체나 타입에 대한 정보에 접근할 수 있는 식별자를 사용할 수 있습니다. 아래는 메소드의 간단한 예제입니다.

package main

import "fmt"

type Rectangle struct {
    width  int
    height int
}

func (r Rectangle) Area() int {
    return r.width * r.height
}

func main() {
    rect := Rectangle{width: 10, height: 5}
    fmt.Println("넓이:", rect.Area())
}

위 예제에서 Rectangle 구조체에 Area 메소드를 정의하였습니다. Area 메소드는 r이라는 수신자를 통해 Rectangle 구조체의 멤버 변수에 접근하여 넓이를 계산하고 반환합니다. main 함수에서는 Area 메소드를 호출하여 Rectangle 구조체의 넓이를 출력합니다.

결론

Go 언어에서는 콜백 함수와 메소드를 강력하게 지원하여 다양한 상황에서 유용하게 활용할 수 있습니다. 콜백 함수는 비동기적인 이벤트 처리에 유용하며, 메소드는 특정 구조체나 타입에 대한 동작을 모듈화하고 관리할 수 있습니다. 이러한 개념들을 잘 활용하여 효율적이고 유연한 Go 프로그램을 개발해보세요!

참고 자료