Struct의 Field zero value 지정
Struct의 Filed에 타입 별로 zero value를 지정해야 하는 경우가 생겼다.
golang에선 reflect 패키지를 활용하여 해당 작업을 할 수 있어 테스트 코드를 기록해놓으려 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
type user struct {
Name string `json:"name"`
Age int32 `json:"age"`
}
func LoopObjectField() *user {
initUser := &user{}
fmt.Println(reflect.TypeOf(initUser))
element := reflect.ValueOf(initUser).Elem()
fieldNum := element.NumField()
for i := 0; i < fieldNum; i++ {
v := element.Field(i)
kind := v.Kind()
if kind == reflect.String {
v.SetString("defaultString")
} else if kind == reflect.Int32 {
v.SetInt(-1)
}
}
return initUser
}
Field의 Kind를 통해 Type을 확인하고, Set 메서드를 통해 원하는 zero value를 입력해준다.
This post is licensed under CC BY 4.0 by the author.