当前位置: 首页 > news >正文

宜昌建网站o2o苗木网站建设

宜昌建网站,o2o苗木网站建设,网站首页幻灯片代码,建设工程质量监督网站package main import ( “fmt” “reflect” ) type Job interface { New([]interface{}) interface{} Run() (interface{}, error) } type DetEd struct { Name string Age int } // 为什么这样设计 // 这样就避免了 在创建新的实例的之后 结构体的方法中接受者为指针类型…package main import ( “fmt” “reflect” ) type Job interface { New([]interface{}) interface{} Run() (interface{}, error) } type DetEd struct { Name string Age int } // 为什么这样设计 // 这样就避免了 在创建新的实例的之后 结构体的方法中接受者为指针类型的不可见的问题 func (DetEd) New() *DetEd { return DetEd{} } func (ed *DetEd) Run(msg int) (interface{}, error) { fmt.Printf(“msg %v,name%v, age%v \n”, msg, ed.Name, ed.Age) return nil, nil } func CreateNewObject(controller interface{}) { // 解析结构体 Dt : reflect.TypeOf(controller) // 这里可以拿到两个方法 _, ok : Dt.MethodByName(New) if !ok {panic(not found New function) }Dt Dt.Elem() // 这之后就只能拿到一个方法了 // 记录对应属性所在的位置 nameMap : make(map[int]string, 0) for i : 0; i Dt.NumField(); i {field : Dt.Field(i)nameMap[i] field.Name }// 创建新的指针结构体对象 // 获取一个新的结构体对象 rv : reflect.ValueOf(controller) newobjects : rv.MethodByName(New).Call(nil) targetObject : newobjects[0] // targetObject.newDATA : targetObject.Interface().(*DetEd) newDATA.Run(111111111111111)// 真实数据 赋值 // tObject : targetObject.Elem() // 获取真实数据 // idata : map[string]interface{}{Name: 张三, Age: 23} // for i : 0; i tObject.NumField(); i { // field : tObject.Field(i) // fieldType : field.Type() // targetValue : reflect.ValueOf(idata[nameMap[i]]) // // 将输入的值转换为结构体对应属性需要的类型 // result : reflect.ValueOf(targetValue.Interface()).Convert(fieldType) // // 赋值 // tObject.Field(i).Set(result) // } // // 运行指定方法 // targetObject.MethodByName(Run).Call([]reflect.Value{1})} type OperatorInterface interface { New(conf []byte) (OperatorInterface, error) Run() } type MergeOPNew struct { Conf struct { Enabled bool yaml:enabled } Data string } // New 通过反射创建出新一个对象 func (op *MergeOPNew) New(data []byte) (result OperatorInterface, err error) { tmpResult : MergeOPNew{Data: “3”} return tmpResult, nil} func (op *MergeOPNew) Run() { fmt.Printf(“Run %s\n”, op.Data) } func main() { mergeOPNew : MergeOPNew{} data, err : mergeOPNew.New([]byte(enabled: true)) if err ! nil { panic(err) } data.Run() // CreateNewObject(DetEd{}) // []strategy.MergeOPV3} type Student struct { Id int Name string Age int } func reflectTest(i interface{}) { // 获取变量的 reflect.Type reType : reflect.TypeOf(i) fmt.Println(“reflect.Type”, reType) // 获取变量的 reflect.Value reVal : reflect.ValueOf(i) fmt.Println(reflect.Value, reVal)// 打印reVal类型使用 reVal打印Name 成员 失败。无法索引Name成员 //fmt.Printf(reVal%T, name%v,reVal, reVal.Name)// 将 reVal 转成 interface iVal : reVal.Interface() fmt.Printf(iVal %v, type %T\n, iVal, iVal) // iVal.Name 会报错Unresolved reference Name // fmt.Printf(iVal %v, type %T, name %v\n, iVal, iVal, iVal.Name)// 将 interface 通过类型断言 转回成 Student // stu: iVal.(Student) if stu, ok : iVal.(Student); ok {fmt.Printf(stu %v, type %T, name%v\n, stu, stu, stu.Name) }}
http://www.hkea.cn/news/14452957/

相关文章:

  • 网站建设系统教程wordpress 注册按钮
  • 什么网站可以做简历如何做博客网站
  • 娱乐公司网站建站背景介绍中文域名.网站
  • 怎么做qq代挂网站南京驰铭做网站公司
  • 在工商局网站做年报要交费吗托者设计吧官网
  • 阿里云虚拟主机建站教程做电脑租赁网站
  • 海外购物网站大全高德地图怎么导航环线
  • 惠阳网站优化学校英文网站建设
  • 网站的建设方式有哪些wordpress页面发布失败为什么
  • 检察院网站建设标书wordpress 商务主题
  • 东莞外贸网站建设广西百度seo
  • 凡客的网站功能个人怎么做购物网站
  • 什么网站做视频最赚钱建设工程施工司法解释
  • 门户网站开发技术建设充值网站多钱
  • 郓城菏泽网站建设巴中 网站建设
  • 信息网站建设腾讯云做wordpress太卡
  • 科技网站制作浙江省建设行政主管部门网站
  • 楼盘怎么在网站上做推广复试联系导师模板
  • 怎么做网站服务器吗公司做网站该注意哪些
  • 福州seo网站优化两支队伍建设专题网站
  • 如何快速被百度收录百度词条优化工作
  • 网站建设中高低端区别郑州建站以来
  • 合肥网站制作公司电话做网站免费搭建
  • 学校网站英文鲅鱼圈规划建设局网站
  • 1m带宽网站支持多少人同时在线学院网站建设实例
  • 某集团网站建设规划书免费html网页源代码
  • wordpress网站数据库备份凡科网注册
  • 中职网站建设溧阳市建设局网站
  • 做企业展示网站怎么把自己做的网页生成链接
  • 公司网站建立的建议网站介绍页面