[go] reflect 패키지의 리플렉션 기능
이번에는 Go 언어에서 제공하는 reflect
패키지의 기능에 대해 알아보겠습니다.
1. 리플렉션이란?
리플렉션(Reflection)은 프로그램이 실행 시에 자신의 구조를 조사하거나 수정할 수 있는 능력을 의미합니다. 즉, 코드를 작성할 때 정적으로 알 수 없는 데이터 타입이나 변수들에 동적으로 접근하는 기술을 말합니다.
2. reflect 패키지
Go 언어에서는 reflect
패키지를 통해 리플렉션을 지원합니다. 이를 사용하면 인터페이스를 통해 값의 유형을 검사하고 조작하는 기능을 제공받을 수 있습니다. 예를 들어, 구조체의 필드 정보 확인, 메서드 호출, 타입 정보 추출 등이 가능합니다.
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Alice", Age: 30}
t := reflect.TypeOf(p)
fmt.Println(t) // 출력: main.Person
v := reflect.ValueOf(p)
fmt.Println(v) // 출력: {Alice 30}
fmt.Println(t.Kind()) // 출력: struct
fmt.Println(t.NumField()) // 출력: 2
fmt.Println(t.Field(0).Name) // 출력: Name
fmt.Println(t.Field(1).Name) // 출력: Age
}
3. 활용 예시
리플렉션은 인터페이스를 통해 일반적인 객체를 다루는 기술입니다. 따라서 런타임 시에 동적으로 변수를 조작하거나 타입을 체크하는 등의 다양한 활용이 가능합니다.
이처럼 reflect
패키지는 Go 언어의 동적인 측면에서 매우 유용하게 사용될 수 있는 패키지 중 하나입니다.
참고 자료: Go 언어 공식 문서
위 내용은 Go 언어에서 제공하는 reflect
패키지의 리플렉션 기능에 대한 간략한 소개입니다.