go里面的继承实现,父类类型做为函数入参,怎么传子类作为参数

lnktoking · · 2006 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

``` go type Task struct{ TaskExec Status int Name string StratTime int64 EndTime int64 } type TaskExec interface{ exec() } type TaskA struct{ Task ParamA string } type TaskB struct{ Task ParamA string } func (TaskA) exec(){ // 执行任务A的逻辑 } func (TaskB) exec(){ // 执行任务B的逻辑 } // 执行任务,问题点在入参这里,这样写入参就只能是Task,不能传TaskA和TaskB, // 用go有什么办法可以实现像java一样传子类做为入参 func Exec(task *Task){ // 修改任务状态为执行中 task.Status = 1 // 记录任务开始执行时间 task.StartTime = uint64(time.Now().Unix()) // 这里还会有很共性逻辑处理被省略掉了 // 执行具体任务的逻辑 task.exec() // 修改任务状态为执行结束 task.Status = 2 // 记录任务执行结束时间 task.EndTime = uint64(time.Now().Unix()) // 这里也是还会有很共性逻辑处理被省略掉了 } func main(){ ta := TaskA{} tb := TaskB{} // 这里要怎么才能传子类到函数里面执行???? Exec(&ta) Exec(&tb) } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2006 次点击  
加入收藏 微博
6 回复  |  直到 2023-09-04 20:29:58
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传