예제 #1
0
파일: example.go 프로젝트: sdming/kiss
func parse() {
	fmt.Println("parse struct")

	var u1 User
	var u2 = map[string]string{
		"Name":   "tom",
		"Age":    "11",
		"Single": "true"}

	v1 := reflect.ValueOf(&u1).Elem()
	var src kiss.StrGetFunc = func(name string) (string, bool) {
		x, ok := u2[name]
		return x, ok
	}
	kiss.ParseStruct(v1, src)

	fmt.Println(u1)
}
예제 #2
0
파일: kiss_test.go 프로젝트: sdming/kiss
func TestParseStruct(t *testing.T) {
	var t1 SimpleType
	var t2 map[string]string = strMap
	v1 := reflect.ValueOf(&t1).Elem()
	var src kiss.StrGetFunc = func(name string) (string, bool) {
		x, ok := t2[name]
		return x, ok
	}
	kiss.ParseStruct(v1, src)

	for i := 0; i < v1.Type().NumField(); i++ {
		f := v1.Type().Field(i)
		except, ok := t2[f.Name]
		actual := fmt.Sprint(v1.FieldByName(f.Name).Interface())
		if !ok || except != actual {
			t.Errorf("extend field %s fail, except %s, actual %s", f.Name, except, actual)
		}
	}
}