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

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 - 知乎

华为P40Pro再见华为P40Pro实际是上一代的顶级旗舰,是比小米11ultra更适合被称为安卓之光的手机,但现在华为P50都发布了,我们要理解华为P40Pro应该被说再见!从华为P50Pro和华为腾讯视频海外版扫黑风暴无超前点播,你怎么看待这一行为?据爆料,腾讯视频海外版播放的扫黑风暴是没有超前点播的,也就是说买一次vip就行,不用再额外花钱,也不存在会员专属广告。不过腾讯锁了中国IP,中国用户在腾讯视频海外版上根本就搜不到扫腾讯爱奇艺接连发声改!网友终于等到了近日,腾讯视频按顺序解锁观看涉嫌捆绑销售,引起了网友广泛的讨论。(此前报道扫黑风暴超前点播,被点名!)9月1日,腾讯视频发布声明,称会尽快调整解锁规则,支持用户选集解锁。以下是腾讯爱奇艺奇遇3VR一体机发布发烧级游戏大作,顶级硬件配置,内容也不拉跨伴随着元宇宙的概念爆火,不论对VRAR还是MR市场都带来了不小的震动。就在前几日,有传言称字节跳动正在收购国内VR设备公司Pico,这一消息后来也得到了字节跳动的证实。相比之下,同9月2日军工证券5g通信怎么走?昨天的军工大跌,辉哥收益率大幅回撤,辉哥只能忍了!辉哥最欣赏的一句话胜不骄,败不馁!加油!!本月的目标是做到50点!今年的目标是做到80点!这两个目标继续维持不变,欢迎大家一起共同5G还没普及,韩国LG公司6G已经试验成功,我们呢?5G是由国际组织3GPP制定批准的一个通信标准,目前该组织并未开始讨论6G采用什么技术,哪里来的6G就成功了的信息?你可以说你在实验新技术,你可以说你在为将来的6G做准备,但你没有未来世界什么样?经开区今天开幕的世界5G大会给你答案因疫情而延期的2021世界5G大会已于8月31日在北京经开区重启大幕,9月1号2号两天开始向公众开幕,随小编来大会现场先睹为快吧。2万平方米展馆打造5G新世界,34家企业带来620华为有什么魔力?为什么大家宁愿买4G的P50,也不买5G的iPhone12华为是国内顶尖的科技公司,在高通和苹果等世界先进的企业还没有打造出5G芯片的时候,华为率先推出了集成5G网络的麒麟9000芯片,取得这样的成绩值得我们骄傲。不过好景不长,华为的突出三星带你去一趟海南近期超火的小众景点山钦湾燕子洞绝美海景,礁石林立,浪花肆意,惊涛拍岸。EXIF信息2。20厂商samsung型号SMG9880光圈1。8ISO16曝光时间0。0005时间20210726110639EXIF信息华为WATCH3评测鸿蒙生态的腕上集大成,做到了有史以来最好我曾试图游说过几位事业有成的人士,为他们的手机配上一块智能手表。即便是对智能手表一无所知甚至排斥的人,只要我提到心率血氧睡眠等帮助他们养成健康生活习惯的相关功能时,他们的眼睛也还是乐视手机回归,搭载720P屏幕AppleWatch占市场一半份额乐视手机回归,搭载720P屏幕还记得那个为梦想窒息的乐视手机吗,今天它要回来了。近期乐视新机通过了入网许可,入网信息显示乐视新机搭载的是1600720分辨率的TFT材质屏幕,大小是
高层释放养老改革信号养老不能全靠政府大家好。我是老李。今天我们来聊聊养老。养老不能全靠政府,没想到当年的一个段子,如今一语成谶,但是却又和大家想象的不太一样。高层信号本月10号,中国金融刊登了前央行行长周小川署名的文监管人士齐发声,透露出未来哪些政策导向?大家好,我是老李。今天来和大家聊聊政策导向。9月26日,全球财富管理论坛在上海举办,财政部部长助理欧文汉中国银保监会副主席曹宇国家外汇管理局副局长陆磊中国证监会机构部主任邱勇等出席小米有品掌上玩具火了,AI智能控制12种玩法,90后顾家必备根据调查表明,在女人眼中,男人最帅的瞬间,除了付款刷卡外,就是帮忙做修理。换灯泡,修ipad自行车,装一下DIY的家具等等,然而这些活,有50可以靠蛮力完成,剩下的一半则需要热熔胶要官宣了?天王偶像刘德华或代言小米MIX4?米粉必须买近日,刘德华发布了一条自己出道40周年的视频,随后小米集团CEO雷军也在微博上转发,不久又删除该条微博。除此之外,多名小米内部工作人员也都转发刘德华出道40周年相关话题微博。而刚好为什么K40同价位将最受欢迎?卢伟冰说出真相,得罪友商在智能手机时代开启的前几年,苹果一直是手机界的老大哥,也是被不少手机厂商模仿的对象。不过随着国产手机的不断发展,已经有部分手机品牌实现了弯道超车,取代了苹果在部分用户心目中的位置,小米有品再现爆款,引发打工人激烈热议,因实用性太强,男女可用前段时间在网上冲浪看到一条评论说道地球不爆炸,我们不放假宇宙不重启,我们不休息!简单明了的一句话,却透露打工人上班的心酸历程。打工人这个词逐渐深入人心,因为大家发现不管处于什么阶层耐克联名Supreme可以,国货联名就很low?小米有品打破成见最近几年非常流行品牌与品牌的跨界联名,比如名创优品联名漫威,匡威联名J。W。Anderson耐克联名supreme等等。这些品牌间的合作联名,都有一个期望目标,就是11大于2。而最小米有品新鞋又炸圈了,弹软均衡,轻净透气,米粉爱不释手作为混迹鞋圈好多年的测评博主,平时看到不少品牌的鞋子打着科技加持的口号光明正大溢价,小编就特别为其买单的人心疼,因为实则成本仅为售价几十分之一的鞋子,在一些限量联名的活动中能被卖出华为刚推出鸿蒙2。0,谷歌开发者大会就宣布新系统,谷歌急了?时隔两年,5月19日凌晨,GoogleIO2021开发者大会今日开幕。本次大会谷歌除更新了Android12,WearOS等普通用户熟悉的系统,还对外宣布了筹备多年的新系统Fuch打工人,蚂蚁的股票值得你买吗?大家好,我是老李。今天和大家聊聊购买蚂蚁股票的事。最近很多同学都关注蚂蚁集团即将公开发行上市的消息。且不论马老板舌战群儒谁对谁错的问题,普通的小老百姓可能也不关心新金融旧金融。大家20年保证续保?长期医疗险的黑暗森林才是最可怕的事大家好,我是老李。今天和大家聊聊长期医疗险。最近好医保出了一个可以保证续保20年的版本,可以说是引起了广泛的关注。本来好医保旗下的保险一般来说都挺物美价廉的,品牌更是将自己的slo