func MakeStruct(args ...interface{}) reflect.Value {
var sfs []reflect.StructField
for k, v := range args {
typ := reflect.TypeOf(v)
structField := reflect.StructField{
Name: fmt.Sprintf("F%d",k+1),
Type: typ,
}
sfs = append(sfs,structField)
}
st := reflect.StructOf(sfs)
so := reflect.New(st) //生成指定类型的反射指针对象
return so
}
func TestMakeStruct(t *testing.T) {
sr := MakeStruct(0,"你好",[]int{1,2,3})
sr.Elem().Field(0).SetInt(100)
sr.Elem().Field(1).SetString("hello")
sr.Elem().Field(2).Set(reflect.ValueOf([]int{5,6,7}))
fmt.Println(sr)
for i := 0 ; i < sr.Elem().NumField(); i++ {
fmt.Println(sr.Elem().Field(i))
}
}
09-15
572
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交