[go] reflect 패키지로 구조체 필드 정보 가져오기

Go 프로그래밍에서 reflect 패키지는 실행 시간에 변수나 구조체 등의 정보를 검사하고 조작하는 기능을 제공합니다. 이 기능을 사용하면 구조체의 필드 정보를 동적으로 가져올 수 있어 유연한 프로그래밍이 가능해집니다.

reflect 패키지 import 하기

먼저 reflect 패키지를 import 해야 합니다.

import "reflect"

구조체 필드 정보 가져오기

아래의 예제 코드는 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)
	for i := 0; i < t.NumField(); i++ {
		field := t.Field(i)
		fmt.Printf("Field name: %s, type: %v\n", field.Name, field.Type)
	}
}

위의 코드는 Person이라는 구조체의 필드 정보를 가져와서 출력하는 간단한 예제입니다. reflect.TypeOf 함수를 사용하여 구조체의 유형을 가져온 후 NumField 메서드로 필드의 개수를 얻고, 반복문을 통해 각 필드의 이름과 유형을 출력합니다.

구조체의 필드 정보를 동적으로 가져올 수 있기 때문에 프로그램이 실행될 때까지 어떤 구조체를 다루게 될지 모를 때 유용하게 사용될 수 있습니다.

마치며

reflect 패키지를 사용하여 구조체의 필드 정보를 가져오는 방법을 알아보았습니다. 이를 통해 프로그램이 실행 중일 때 동적으로 구조체를 조작하거나 검사하는 기능을 구현할 수 있습니다.

더 많은 정보는 Go 공식 문서를 참고하시기 바랍니다.