初级会员
  • 第 74647 位会员
  • symphony09
  • 2022-07-16 09:53:16
  • Offline
  • 21 41

最近发布的主题

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • java 的上转型确实巧妙,回归正题,用 go 的话我会这样写 ```go type ITask interface { TaskExec // 通过接口方法间接访问属性 Info() *TaskInfo } type Task struct { TaskExec TaskInfo } func (task *Task) Info() *TaskInfo { return &task.TaskInfo } // 封装属性 type TaskInfo struct { Status int Name string StartTime uint64 EndTime uint64 } type TaskExec interface { exec() } type TaskA struct { Task ParamA string } type TaskB struct { Task ParamA string } func (TaskA) exec() { // 执行任务A的逻辑 } func (TaskB) exec() { // 执行任务B的逻辑 } // 在 go 中用接口实现多态 func Exec(task ITask) { // 接口无法访问属性,通过 Info 方法间接访问 // 修改任务状态为执行中 task.Info().Status = 1 // 记录任务开始执行时间 task.Info().StartTime = uint64(time.Now().Unix()) // 这里还会有很共性逻辑处理被省略掉了 // 执行具体任务的逻辑 task.exec() // 修改任务状态为执行结束 task.Info().Status = 2 // 记录任务执行结束时间 task.Info().EndTime = uint64(time.Now().Unix()) // 这里也是还会有很共性逻辑处理被省略掉了 } func main() { ta := TaskA{} tb := TaskB{} // 嵌入 Task 的类型自动实现 ITask 接口,可以被传入 Exec 函数 Exec(&ta) Exec(&tb) } ```
  • 评论了主题 go 中的范型
    #8 @lysShub 准备在1.21版本加入标准库的泛型map实现,就多处用到了 any 约束,不能说不存在吧。详见:https://github.com/golang/go/issues/57436
  • 评论了主题 go 中的范型
    #5 @Neightly 大家友善交流哈,我是觉得说一下也不是坏事,能让人留点心。如果 Go Team 确实做了优化,还能水篇文章哈哈。
  • 评论了主题 go 中的范型
    #4 @lysShub 谢谢回复,关于第一点我觉得还可以再讨论下。举例来说,泛型队列只关心元素间次序关系,不关心元素的结构和功能。这时使用 any 约束应该是恰当的,并且也不涉及断言,因为不需要使用元素的特定功能。
  • 评论了主题 go 中的范型
    #1 @lysShub 没有质疑的意思,可以具体说说是什么糟粕吗,谢谢