GO引入泛型

39 阅读1分钟

面临问题

  • 函数式编程:函数形参和实参的类型必须一致,因此编写程序时,要指定形参和实参的类型
  • 复杂数据结构:定义数据结构比如链表、堆、树、图等,不能指定数据类型

GO 1.18之前解决方案

  • GO 1.18之前的解决方案:接口+反射
  • 缺点:
    • 反射使用复杂
    • 缺少编译时的检查
    • 性能不佳

泛型的优点

  • 提供编译时的类型检查

接口的使用变化

维护泛型约束时,使用接口降低维护复杂度

泛型不合适的场景

只调函数不返回类型

  • 目前只有一个场景,就是只调参数的一个方法
  • 这一类情况完全不需要使用泛型,应该使用接口