[go] reflect 패키지를 활용한 동적 메서드 호출
Go 언어에서는 관련된 메서드를 호출할 수 있는 reflect 패키지를 제공합니다. 이 패키지를 사용하면 프로그램이 실행 중에 타입 정보를 조사하고, 메서드를 호출할 수 있습니다.
reflect 패키지 소개
reflect 패키지는 Go 언어의 메타 프로그래밍을 제공하여 프로그램이 실행 중에 변수, 구조체, 인터페이스 등을 조사하고 조작할 수 있게 해줍니다. reflect.TypeOf, reflect.ValueOf, reflect.MethodByName 등을 사용하여 동적으로 필요한 메서드를 호출할 수 있습니다.
import "reflect"
동적 메서드 호출 예제
다음은 reflect 패키지를 사용하여 동적으로 메서드를 호출하는 간단한 예제입니다.
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func (p Person) SayHello() {
fmt.Println("Hello, I'm", p.Name)
}
func main() {
p := Person{Name: "Alice", Age: 30}
v := reflect.ValueOf(p)
m := v.MethodByName("SayHello")
if m.IsValid() {
m.Call(nil)
}
}
이 예제에서는 Person 구조체의 SayHello 메서드를 reflect 패키지를 사용하여 동적으로 호출하고 있습니다.
결론
reflect 패키지는 Go 언어에서 동적 프로그래밍을 위한 강력한 도구로, 프로그램이 실행 중에 타입 정보를 조사하고 메서드를 호출할 수 있게 해줍니다. 이를 통해 보다 유연하고 동적인 프로그래밍을 할 수 있게 됩니다.
더 자세한 내용은 Go 공식 문서의 reflect 패키지를 참고할 수 있습니다.