go里面的继承实现,子类怎么做为父类类型做为入参(语言-golang)

请教一下,我这有个功能是想请教一下用go可以怎样更好的实现。功能逻辑是有很多种类型任务,这些任务大部分的逻辑相关,只有执行方法里面的逻辑是不一样的,所以有一个父类结构体Task,具体的任务TaskXX都会继承这个结构体再实现自己的任务逻辑。现在问题看下面代码,直接执行任务的时候的入参类型要怎么解决?

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())
  // 这里也是还会有很共性逻辑处理被省略掉了
}

【以下回答由 GPT 生成】

// 解决方案
// 在Go语言中,可以使用接口实现类似于Java中子类作为父类类型的入参的功能。具体实现方法如下:

// 定义一个接口和方法
type TaskInterface interface {
    exec()
}

func Exec(task TaskInterface) {
    // ...
    task.exec()
    // ...
}

在代码中,我们创建了一个名为TaskInterface的接口,并将exec方法声明在其中。接着,我们对Exec函数的入参进行更改,使用TaskInterface作为参数类型。TaskA和TaskB都实现了TaskInterface接口中的exec方法,因此它们可以被传递给Exec函数。这样,我们就可以将TaskA和TaskB作为入参传递给Exec函数了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^