范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

golang变相实现抽象类

  golang里的struct只能有属性, interface只能有方法定义。这点在java里很好实现的abstract class在这里就不能直接实现, 可以通过struct和interface的结合定义,实现抽象类的类似的功能。
  直接上代码:
  代码都来之与项目
  GitHub - golang fot xxl-job executor
  在这个项目里,重构了executor和默认的RestfulExecutor的实现方式, 就是采用了上述的方式。
  先定义接口 // executor 执行器 type executor interface {    // Init    // 初始化执行器    Init(opts ...Option)    // Run 启动服务    Run() error    // Registry 注册执行器到调度中心    Registry()    // UnRegistry 从调度中心在注销执行器    UnRegistry() error    // SetLogHandler 日志handler    SetLogHandler(handler LogHandler)    // Stop 停止服务    Stop()    // RequestCallback 执行后回调请求给调度中心    RequestCallback(task *Task, code int64, msg string)    // RegTask    // 注册任务    RegTask(pattern string, task TaskFunc) }
  然后定义我们需要的抽象类 type Executor struct {    executor    // private    opts    Options    address string    regList *taskPool //注册任务列表    runList *taskPool //正在执行任务列表    log     log4go.Logger     logHandler LogHandler //日志查询handler     // inner    _impl executor  // 这里很关键,是实现抽象类的重要地方 }  // 这里很关键,是实现抽象类的重要地方,封装一个wrap方法, func (e *Executor) wrap(_wrap executor) { 	e._impl = _wrap }
  实现抽象类里的主要方法 func (e *Executor) Init(opts ...Option) {    for _, o := range opts {       o(&e.opts)    }     e.log = e.opts.logger     e.regList = &taskPool{       data: make(map[string]*Task),    }    e.runList = &taskPool{       data: make(map[string]*Task),    }     e.address = e.opts.ExecutorIp + ":" + e.opts.ExecutorPort     e.log.Info("%v %v", EXECUTOR4G_VERSION, e.address)     go e.Registry()  // 这里的Regstry是子类需要实现的方法 }   // Registry 注册执行器到调度中心 func (e *Executor) Registry() {  /// 用wrap方式把调用交换具体的子类 	e._impl.Registry() }
  子类实现 type RestFulExecutor struct {    Executor    mu sync.RWMutex }  // Registry // 注册执行器到调度中心 func (e *RestFulExecutor) Registry() {  	t := time.NewTimer(time.Second * 0) //初始立即执行 	defer t.Stop() .... }
  最关键的地方,调用 func newExecutor(opts ...Option) executor {    //var exec executor     options := newOptions(opts...)     if options.executorImpl == nil {       // 变相的抽象类的实现       e := &RestFulExecutor{}       e.wrap(e)  // 最关键的地方,使用wrap把具体实现子类包装进返回接口        e.opts = options       return e    } else {       return options.executorImpl    } }
  具体代码可以查看项目中的源码
  项目地址
  GitHub - gohutool/boot4go-xxljob-executor: golang fot xxl-job executor
  推荐几个好工具 GitHub - gohutool/boot4go: a bootstrap framework for golang like as spring-boot
  GitHub - gohutool/log4go: a logkit like as log4j with go language  golang里的日志工具log4go - 知乎
  golang中的表达式解析-expression4go 简单的EL - 知乎

藏玩阁恐龙小队设定图公布!修罗王大合体要来啦藏玩阁除了大小冲云霄之外,其实最近还公布了一套高能产品,上次广州TTS展的视频中,我也给兄弟们分享过,就是藏玩阁的恐龙小队,最近恐龙小队高清设定图终于公布了,咱们简单看看。对比之前村民提前11分钟报警没能阻止列车脱轨?亟待更多回应3月30日,从济南站至广州站站的T179号客车脱轨,在湖南郴州翻车,造成1人死亡,4人重伤,123人轻伤。广铁该小组报告说,由于几天降雨的影响,京广线马田墟和杜琪峰站之间发生了线路该来的终归要来的,GTX1650GDDR6版发布总所周知,AMD家的北极星这两年一直被反复鞭X尸,推出各种不同版本,什么RX5802048SP,RX590GME,而老黄那边看似只有无情手术刀在磨刀霍霍,其实背地里也干起了一样的勾千呼万唤始出来,舅舅党们翘首以盼的苹果新SE终于发布了2020年4月15号晚上,苹果官网更新了新一代iPhoneSE,距离初代SE发布已悄然过去四年的时间。官网TAG称心称手,超值入手。称心称手顾名思义就是iPhoneSE主打的易操控电视广告何所似,老八美食差可拟这两天,荣耀总裁赵明在GMIC2020上关于要让开关机广告从电视大屏类产品中消失的演讲引起了不少关注。演讲中,赵明提出开关机广告应该公开用户分担的成本,让用户拥有选择权并且将广告收3000元以下的865手机,元芳你怎么看?整个4月份智能手机市场像是打了鸡血一般,各家你方唱罢我登场,推出了旗下的新一代产品。想要在这样一个拼杀激烈的战场中突出重围,除了要求产品本身质量过硬外,还需要有独特的卖点,才能吸引知产晨报华为公开业务KPI获取专利,东阿阿胶起诉山寨商获赔30万8月27日知识产权快讯1hr专利腾讯联系人社交账户相关专利获授权,可通过少量信息确定社交账号近日,腾讯科技(深圳)有限公司获得一种获取联系人社交账号的方法及装置专利授权,公告号CN知产晨报京东申请定期盈商标,三星起诉华为再被驳回8月26日知识产权快讯1hr专利腾讯热点事件信息处理专利获授权,可及时掌握网络热点事件8月24日,腾讯科技(深圳)有限公司获得一种热点事件信息处理方法和装置专利授权。专利摘要显示,官宣!9月20日正式开园,北京环球影城究竟有什么好玩的?最近,某书某音被拿到北京环球影城内测票的亲友团刷屏,各种打卡照攻略获得大量点赞评论。一票难求也让不少黄牛顶风作案,将票价哄抬至5000张。北京环球度假区在官方微信宣布,为期三个月的韩国MBC电视台起诉B站侵权,优酷申请这就是街舞战队名商标9月13日知识产权快讯1hr专利百度公益参展2021国际数博会48项AI寻人专利科技首次集结亮相2021年9月6日,由工业和信息化部和河北省人民政府共同主办的2021中国国际数字博快手将推泛知识产权脱口秀节目,泡泡玛特上半年自有IP收入9亿元8月30日知识产权快讯专利我国高价值发明专利审查周期压减至13。3个月国家知识产权局局长申长雨在日前举行的专利审查工作座谈会上表示,我国高价值发明专利审查周期压减至13。3个月,发
做好搜索和收藏蜜雪冰城支付宝小程序日访问量环比暴增43倍奶茶品牌的竞争,正从性价比线下开店速度蔓延至对线上数字化运营手段的运用。继今年门店总量突破10000家后,蜜雪冰城正加速布局线上渠道,保持持续增长。8月16日,来自支付宝开放平台的79。92!超特斯拉?五菱宏光MINIEV登顶自主新能源车保值率榜首最近,中国汽车流通协会联合相关机构发布了2021年上半年中国汽车保值率研究报告,报告中的车型全部为中国品牌的新能源车,在1年保值率排行中,五菱宏光MINIEV的保值率高达79。92企业家驾驶蔚来车祸离世,被质疑的NOP领航功能到底是什么?记者李文博编辑8月14日,某个人公众号发布讣告称,上善若水投资管理公司创始人意统天下餐饮管理公司创始人美一好品牌管理公司创始人林文钦(昵称萌剑客)遭遇车祸丧生。讣告特别指出,驾驶人曾经风靡一时的小米网红电动车,现在怎么样了?随着网络不断的发展以及自媒体的兴起,任何人任何物都有可能成为流量明星,而它们则被称为网红产品。两轮电动车作为一个草根产品,随着这几年大资本的介入,如今也培养出了不少的网红产品,尤其电商迎来小圈热!上半年我国新增电商企业超57万家自2020年拼多多上线主打真实评价的产品拼小圈后,各大电商也纷纷上线了小圈类产品。据统计,除拼多多之外,淘宝目前上线了淘友圈,京东上线了京友圈,近期媒体报道显示,美团也开始了饭小圈ZOL科技早餐微信支持切换2个以上帐号8月16日晨,为您推送的科技消息微信新增支持切换2个以上帐号在2018年,微信上线了双帐号切换。最近,微信iOS版8。0。10安卓版8。0。9已支持切换两个以上帐号,据验证至少可支新手电商创业怎么谈到便宜的快递?主要考虑的几个问题1。怎么找快递公司?上策优先找快递公司总部咨询快递的网点合作,可以打电话或官网查询,找到关键人物谈。下策找周边菜鸟驿站合作,不过他们肯定会贵,大概78快左右。不过NFT是什么!为何引得腾讯阿里等大厂纷纷入局?非同质代币(NFT)在2021年的前几个月进入公众视野。佳士得和苏富比等艺术品拍卖行能够以高价拍出数字艺术家BeepleLarvaLabs团队和许多人的作品。那么,为什么收藏家要为阿里的事反转了吗?来源缓缓说01hr从通报的定性来说(犯罪嫌疑人王某文张某因涉嫌强制猥亵罪被刑拘),总体上没有反转,但此前网传控诉帖(这个帖子被发在了阿里内网,后来传了出来)的部分内容(强制出差强迫Plainsight利用AI接手牲畜管理总部位于旧金山的初创公司Plainsight正在帮助肉类加工业改善其运营从农场到餐桌全覆盖。通过将Plainsight的视觉AI平台和NVIDIAGPU配对来开发视频分析应用程序,手持小米11,是否有必要换成苹果12?个人觉得大家完全没有必要将自己的小米11这款手机换成苹果12,我给到的理由有以下几点大家不妨参考一下。理由一首先苹果13马上就要出了,你想要换一台苹果手机为什么不等待一下苹果12呢