[go] go 언어의 reflect 패키지
Go 언어는 코드를 동적으로 조작할 수 있도록 도와주는 reflect
패키지를 제공합니다. 이 패키지는 코드 내부의 구조체나 인터페이스를 조사하고 조작하는 기능을 제공하여, 일부 상황에서 매우 유용하게 사용될 수 있습니다.
reflect 패키지 소개
Go 언어의 reflect
패키지는 타입 정보를 다루는 데 유용한 메서드와 인터페이스를 제공합니다. 이를 통해 실행 중에 구조체의 필드나 메서드를 조사하거나, 인터페이스를 다루는 등의 작업이 가능해집니다. 예를 들어, 런타임에 어떤 타입이나 값이 어떤 타입인지, 그 값이 가지고 있는 필드나 메서드는 무엇인지 조사할 수 있습니다.
reflect 패키지 사용 예시
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Alice", Age: 30}
v := reflect.ValueOf(p)
for i := 0; i < v.NumField(); i++ {
fmt.Printf("Field %d: %v\n", i, v.Field(i))
}
}
위의 예시는 reflect
패키지를 사용하여 구조체 Person
의 필드를 순회하고 값을 출력하는 간단한 예시입니다.
결론
reflect
패키지는 Go 언어의 강력한 기능 중 하나로, 코드를 동적으로 다루는 데 유용한 기능을 제공합니다. 그러나 과도한 사용은 코드를 복잡하게 만들 수 있으며, 성능 저하의 가능성이 있으므로 신중하게 사용해야 합니다.
더 많은 정보는 Go 공식 문서에서 확인할 수 있습니다.