初级会员
  • 第 55580 位会员
  • yzbzg
  • 清风
  • 2020-08-07 13:51:59
  • Offline
  • 23 6

最近发布的主题

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了主题 sync包once小问题
    那是原子性操作,也是线程安全的,理论上原子性操作会比锁的性能高一些
  • #3 @AnkoGo123 哈哈,python也这样~
  • 去网上找个管理系统,改改就可以拉,可以看看我之前写的开源项目,属于半成品,你在基础上加点自己的东西就可以拉https://gitee.com/lshsuper/go-cmdb
  • @lnktoking 嗯,go的多态一般是结合interface接口去实现,你可以顺着这个思路结合你实际的需求尝试尝试
  • 或许这么写可以满足你的想法(公共逻辑可以绑定到父结构体Task上) package main import ( "log" "time" ) type Task struct { TaskExec Status int Name string StratTime int64 EndTime int64 } func (t Task) start() { // 修改任务状态为执行中 t.Status = 1 // 记录任务开始执行时间 t.StratTime = time.Now().Unix() // 这里还会有很共性逻辑处理被省略掉了 } func (t Task) end() { // 修改任务状态为执行结束 t.Status = 2 // 记录任务执行结束时间 t.EndTime = time.Now().Unix() } type TaskExec interface { exec() } type TaskA struct { Task ParamA string } type TaskB struct { Task ParamA string } func (a TaskA) exec() { // 执行任务A的逻辑 a.start() //A特有逻辑 log.Println("A特有逻辑") a.end() } func (b TaskB) exec() { b.start() //B特有逻辑 log.Println("B特有逻辑") b.end() } // 执行任务,问题点在入参这里,这样写入参就只能是Task,不能传TaskA和TaskB, // 用go有什么办法可以实现像java一样传子类做为入参 func Exec(task TaskExec) { // 这里也是还会有很共性逻辑处理被省略掉了 //具体逻辑 task.exec() } func main() { ta := TaskA{} tb := TaskB{} // 这里要怎么才能传子类到函数里面执行???? Exec(&ta) Exec(&tb) }