[go] 구조체(struct)와 reflect 패키지
Go 언어는 강력한 타입 시스템과 효율적인 메모리 관리로 유명합니다. 이 언어의 핵심 기능 중 하나는 구조체(struct)입니다. 구조체는 여러 필드를 하나로 묶어서 복합 데이터 형식을 만들 수 있게 해줍니다. 또한, reflect 패키지를 사용하여 동적으로 타입 정보를 조사하고 조작할 수 있습니다.
구조체(struct)란?
구조체는 Go 언어에서 사용자 정의 데이터 타입을 만들 수 있는 강력한 기능입니다. 간단한 예시로, 사람의 정보를 저장하는 구조체를 만들어보겠습니다.
type Person struct {
Name string
Age int
Email string
}
위의 코드에서 Person
구조체는 Name
, Age
, Email
세 가지 필드를 갖고 있습니다. 이제 이를 활용하여 사람의 정보를 표현하는 인스턴스를 생성할 수 있습니다.
person := Person{Name: "John Doe", Age: 30, Email: "john@example.com"}
Reflect 패키지 활용하기
reflect 패키지를 사용하면 구조체나 인터페이스의 값, 타입 및 구조를 동적으로 조사할 수 있습니다. 예를 들어, 구조체의 필드 정보를 탐색하거나 동적으로 값을 설정하는 등의 작업을 할 수 있습니다.
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
Email string
}
func main() {
person := Person{Name: "John Doe", Age: 30, Email: "john@example.com"}
t := reflect.TypeOf(person)
for i := 0; i < t.NumField(); i++ {
field := t.Field(i)
fmt.Printf("%s: %v\n", field.Name, reflect.ValueOf(person).Field(i))
}
}
위의 예제는 reflect 패키지를 사용하여 구조체 Person
의 필드 정보를 출력하는 간단한 코드입니다.
이처럼 Go 언어의 구조체와 reflect 패키지를 활용하면 강력한 동적 프로그래밍이 가능합니다. 이러한 기능을 통해 유연하고 다양한 형태의 데이터를 처리할 수 있습니다.
구조체와 reflect 패키지의 활용에 대한 더 많은 내용은 공식 Go 언어 문서를 참고하시기 바랍니다.