通过反射创建结构体 【golang通过反射创建结构体】练习通过反射创建结构体时写的代码
package mainimport (
"fmt"
"reflect"
)type Student struct {
Name string `json:"name"`
Id int`json:"id"`}func main(){
var (
model *Student
st reflect.Type
vl reflect.Value
)
st = reflect.TypeOf(model) //获取类型
st = st.Elem()//获取指向的类型
fmt.Println(st)//main.Student
vl = reflect.New(st) //创建一个指向st类型的指针,本身为val类型
fmt.Printf("%v,%T\n",vl,vl)//&{ 0},reflect.Value{ 0}
vl = vl.Elem() //获取指针指向的vl的值
fmt.Printf("%v,%T\n",vl,vl)//{ 0},reflect.Value
vl.Field(0).SetString("lalala") //给第一个值赋值
vl.Field(1).SetInt(15)//给第二个值赋值
fmt.Printf("%T\n",vl) //reflect.Value
m := vl.Interface()
m = m.(Student)
fmt.Printf("%T",m) //main.Student
}
}
推荐阅读
- 【golang】leetcode中级-字母异位词分组&无重复字符的最长子串
- 彻底理解Golang Map
- kratos线上开源年会它来啦~
- 深入浅出 Golang 资源嵌入方案(go-bindata篇)
- 深入浅出 Golang 资源嵌入方案(前篇)
- golang 经典案例总结
- Go实战 | 基于有向无环图的并发执行流的实现
- Golang 数组和切片
- Go JSON编码与解码()
- golang map基础知识