github.com/bobyang007/helper@v1.1.3/reflecth/set_test.go (about) 1 package reflecth 2 3 import ( 4 "reflect" 5 "testing" 6 ) 7 8 func TestSet(t *testing.T) { 9 type myStruct0 struct { 10 i int 11 s string 12 } 13 14 my0 := myStruct0{} 15 myV := ValueOfPtr(&my0) 16 17 myIV := myV.FieldByName("i") 18 Set(myIV, reflect.ValueOf(2)) 19 if testR := (myStruct0{2, ""}); myV.Interface() != testR { 20 t.Errorf("expect %#v, got %#v", testR, myV.Interface()) 21 } 22 23 // 24 // 25 // 26 27 type myStruct1 struct { 28 I int 29 S string 30 } 31 32 my1 := myStruct1{} 33 myV = ValueOfPtr(&my1) 34 35 myIV = myV.FieldByName("I") 36 Set(myIV, reflect.ValueOf(3)) 37 if testR := (myStruct1{3, ""}); myV.Interface() != testR { 38 t.Errorf("expect %#v, got %#v", testR, myV.Interface()) 39 } 40 } 41 42 func BenchmarkSet(b *testing.B) { 43 for i := 0; i < b.N; i++ { 44 type myStruct0 struct { 45 i int 46 s string 47 } 48 49 my0 := myStruct0{} 50 myV := ValueOfPtr(&my0) 51 52 myIV := myV.FieldByName("i") 53 Set(myIV, reflect.ValueOf(2)) 54 if myV.Interface() != (myStruct0{2, ""}) { 55 b.Errorf("%#v", myV.Interface()) 56 } 57 } 58 }