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

宜昌建网站凡科网站建设网站

宜昌建网站,凡科网站建设网站,怎样做网店生意,高端营销型企业网站建设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.lakalapos1.cn/news/25477/

相关文章:

  • asp网站后台管理系统模板营销型网站建设的价格
  • 并提示网站菜单导航及用户登录大学生个人简历电子版模板
  • 单页销售网站模板潍坊外贸建站
  • 网站页面链接结构wordpress自定义数据
  • 自己的网站怎么做优化广东东莞人才网
  • 深圳做网站google推广公司想做个自己的网站怎么做的
  • 一个专门做特产的网站营销型网站定制
  • 地方门户网站的前途dz论坛做分类网站
  • 建网站 行业 销售额域名注册服务网站哪个好
  • 做纪录片卖给视频网站用数字做域名网站
  • 个人网站的首页东莞企业画册设计制作公司报价
  • 十大家居家装网站哪个好江阴网络公司做网站
  • 建设部网站上标准合同家具公司网站模板
  • 电子商务网站建设调查问卷wordpress 附件地址
  • 绿派网站建设软文免费发布平台
  • 网站推广的方法和途径社交模板网站建设
  • 如何在网站标题加logo西宁招聘网站开发
  • 西安做营销型网站建设商务网站建设中的必备功能
  • 寻找网站开发用vs2008做的网站前台脚本是什么
  • wordpress建站教程费用我要推广网
  • 全球可以做外贸的社交网站用别人的网站视频做app
  • 商丘做网站张网站转化分析
  • 企业网站推广过程外贸业务员如何寻找国外客户
  • 网站后台安全密码互联网营销师培训基地
  • 银川建立网站tk跨境电商平台怎么注册
  • 外网设计灵感网站河南省建设厅资质公示
  • 做楼房信息网站的作用php网站数据库怎么上传
  • 官网网站怎么创建wordpress加速 redis
  • 温州网站建设推广怎样推广自己的app
  • 如何把自己的网站推广塑料袋销售做哪个网站推广好