首页 > 其他分享 >Go-使用反射创建并操作结构体

Go-使用反射创建并操作结构体

时间:2023-07-03 18:13:51浏览次数:41  
标签:反射 创建 elem st reflect User Go model 结构

type User struct{
    UserId string
    Name string
}
func TestReflectStructPtr(){
    var (
        model *User
        st reflect.Type
        elem reflect.Value
    }
    st=reflect.Type(model)    //获取结构体指针类 *User
    st=st.Elem()        //使st = 其指向的结构体类型,类似指针的解引用
    elem=reflect.New(st)    //reflect.New()返回的是一个Value类型值,该值持有一个    指向类型为typ的新申请的零值的指针
    //model就是创建的user结构体变量(实例)
    model=elem.Interface{}.(*User)    //model的类型是*User,其指向与elem一致,操作elem与操作model结果一样
    elem=elem.Elem()    // 取得elem指向的值,即elem=结构体变量(实例):一个空结构体变量   
    elem.FieldByName("UserId").SetString("123456789")    //赋值
    elem.FieldByName("Name").SetString("nickname")
 

 

标签:反射,创建,elem,st,reflect,User,Go,model,结构
From: https://www.cnblogs.com/bug-boy/p/17523583.html

相关文章

  • 画出创建型设计模式的类图
    工厂方法FactoryMethod抽象工厂AbstractFactory单例模式Singleton建造者模式Builder原型模式Prototype......
  • Django自身提供测试类、工具-调研
    Django自身提供测试类、工具django.test.Client他的作用是模拟客户端。提供一系列的方法,例如get、post、delete、login等其中login是用django自身的验证,特殊之处是实例化的Client可以拿到session、cookie【Client.cookies、Client.session】SimpleTestCase非数据库查询的T......
  • django.db.models.query.QuerySet格式的数据输出
    1、deffindmtm2(request):importserializerimportjson#多对多跨表正向查询#res=softlist.objects.filter(hostlists__ip="10.116.6.177").values("softname")res2=softlist.objects.filter(hostlists__ip="10.116.9.233"......
  • golang解决go get下载失败解决办法
    原因:所下载的库依赖有官方库,而官方被封禁网导致。方法:设置代理goenv-wGOPROXY=https://goproxy.cnps:go1.11发布后,还发布一个goproxy提供代理服务,goproxy.cn是专门服务于中国的,依赖于七牛云github地址:https://github.com/goproxy......
  • go语言结构体
    结构体Go语言的结构体有点像面向对象语言中的“类”,但不完全是,Go语言也没打算真正实现面向对象范式。定义使用type定义结构体,可以把结构体看做类型使用。必须指定结构体的字段(属性)名称和类型。typeUserstruct{idintname,addrstring//多个字段类型相同可......
  • 41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】
    已经好久没有讲一些基础的知识了,这一小节来点简单的,这也是为下节的在Spring多数Boot中使用多数据源做准备。从Spring3.0开始,增加了一种新的途径来配置BeanDefinition,这就是通过JavaCode配置BeanDefinition。      与XML和Annotation两种配置方式不同点在于:      ......
  • create-vue 创建vue项目
    1.前提环境已经安装16.0或者更高版本的node.js2.创建一个vue项目npminitvue@latest//将会安装并且执行create-vue 注意:npmrundev......
  • 开发中MongoDB遇到的各种问题
    目录一、安装6版本以下二、安装6版本及以上三、安装6版本以下(解压版)四、配置本地WindowsMongoGB服务五、navicat连接远程mongodb数据库六、ip不一致问题一、安装6版本以下安装MongoDB6版本以下的可以参考以下博主->自动安装版(26条消息)MongoDB安装(超详细)_AIbro的博客-C......
  • 在JAVA中使用mongoTemplate构造查询条件
    //创建条件对象Criteriacriteria=newCriteria();//3.单个条件查询多个字段(客户编号)if(StringUtils.isNotEmpty(bo.getAdmpId())){criteria.orOperator(Criteria.where("final_uid").is(bo.getAdmpId()),Criteria.where("customer_......
  • 创建域控制器
    1.打开服务器管理器,点击添加角色和功能:2.默认,点击下一页: 3.勾选ActiveDirectory,点击下一页: 4.默认,点击下一页,点击安装: 5.等待安装完成,点击关闭:6.完成后回到服务器管理器界面,点击通知--将此服务器提升为域控制器:7.选择添加新林,填入自定义的根域名: 8.填入DS......