[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 공식 문서에서 확인할 수 있습니다.