diff --git "a/day5/\344\275\234\344\270\232/\344\275\234\344\270\232" "b/day5/\344\275\234\344\270\232/\344\275\234\344\270\232" new file mode 100644 index 0000000000000000000000000000000000000000..dc3c7fd1361ba3d78725a898758c920ef1c9f96b --- /dev/null +++ "b/day5/\344\275\234\344\270\232/\344\275\234\344\270\232" @@ -0,0 +1,43 @@ +package main + +import ( + "fmt" + "reflect" +) + +func contruct_struct() { + userType := reflect.TypeOf(User{}) + userValue := reflect.New(userType) + userValue.Elem().FieldByName("age").SetInt(20) + if user, ok := userValue.Interface().(*User); ok { + fmt.Println(user.Gender) + } + u := User{Gender: true} + fmt.Println(u.Gender) +} + +func construct_slice_and_update() { + sliceType := reflect.TypeOf([]User{}) + sliceValue := reflect.MakeSlice(sliceType, 2, 10) + sliceValue.Index(0).Set(reflect.ValueOf(User{age: 10, Gender: true})) + sliceValue.Index(1).Set(reflect.ValueOf(User{age: 20, Gender: true})) + + s := sliceValue.Interface().([]User) + fmt.Println(s[0].age) + fmt.Println(s[1].age) + + sliceValue2 := reflect.ValueOf(&s) + sliceValue2.SetLen(4) + sliceValue2.Elem().Index(2).Set(reflect.ValueOf(.....)) + +} + +func main() { + // contruct_struct() + + s := sliceValue.Interface().([]User) + fmt.Println(s[0].age) + fmt.Println(s[1].age) + + construct_slice_and_update() +}