-
golang reflect로 struct 필드 순회하기메모 및 기타 2022. 11. 22. 16:56
Code
package main import ( "fmt" "reflect" ) type Student struct { Name string Grade int Age int } type Animal struct { Name string Kind string Size int Age int } func main() { s1 := &Student{} LoopObjectField(s1) a1 := &Animal{} LoopObjectField(a1) } func LoopObjectField(object interface{}) { fmt.Println(reflect.TypeOf(object)) e := reflect.ValueOf(object).Elem() fieldNum := e.NumField() for i := 0; i < fieldNum; i++ { v := e.Field(i) t := e.Type().Field(i) fmt.Printf("Name: %s / Type: %s / Value: %v\n", t.Name, t.Type, v.Interface()) } }
LoopObjectField로 들어온 struct가 어떤 struct던 간에 순회한다.
위에서는 Student와 Animal이 다른 struct 구조를 가지고 있지만,
LoopObjectField를 통해서 동일한 양식으로 출력할 수 있는 것이다.
출력 결과
*main.Student Name: Name / Type: string / Value: Name: Grade / Type: int / Value: 0 Name: Age / Type: int / Value: 0 *main.Animal Name: Name / Type: string / Value: Name: Kind / Type: string / Value: Name: Size / Type: int / Value: 0 Name: Age / Type: int / Value: 0
반응형'메모 및 기타' 카테고리의 다른 글
Terraform AWS ec2 userdata로 httpd 생성하기 (0) 2022.12.02 Keycloak client scope 정리 (0) 2022.11.25 Network Trouble Shooting Pod Manifest (0) 2022.11.01 로컬 환경에서 kubelet metric 조회 (0) 2022.11.01 Helm 자주 사용하는 커맨드 정리 (0) 2022.09.20