当前位置: 首页 > news >正文

【Go Generics】泛型为何而生的

结论:它的诞生是为了解决:重载

泛型是 Go 1.18 才加入的核武器,它的诞生是为了解决另一个痛苦:代码极其恶心的重复(Don't Repeat Yourself)。

没有泛型时的痛苦(逼死强迫症)

假设你在公共库morph里,想写一个工具函数:传入两个整数,返回最大的那一个。

func MaxInt(a, b int) int { if a > b { return a } return b }

写完没几天,你发现业务里还需要对比两个float64、两个int64的大小。
在没有泛型的时候,Go 官方又没有重载(Overload)功能,你只能痛苦地复制粘贴,写出极其丑陋的代码:

func MaxFloat64(a, b float64) float64 { ... } func MaxInt64(a, b int64) int64 { ... }

全天下写 Go 的人都在骂:就为了改个类型,老子要写三遍一模一样的逻辑,这不纯粹是体力活吗?

有了泛型(Generics)后的终极救赎

泛型,顾名思义,就是“把类型当成变量一样传进去”。

有了泛型,你只需要写一个函数,就能通吃全天下所有的数字类型:

// [T int | int64 | float64] 代表:这个函数支持这三种类型,用 T 来代替 func Max[T int | int64 | float64](a, b T) T { if a > b { return a } return b }

当你调用时:

  • Max(1, 2)$\rightarrow$ Go 自动识别Tint
  • Max(1.5, 2.5)$\rightarrow$ Go 自动识别Tfloat64

总结:泛型的出现,是为了重载

让你在“逻辑完全相同,只有数据类型不同”的场景下(比如实现一个通用的切片去重、通用的 Map 过滤、或者通用的缓存加载),只写一份代码。

泛型(Generics)关注的是“数据类型(Type)”:比如“不管是 int 还是 string,这段内存剥离逻辑都长一样”。它的核心是消除重复代码。

http://www.gsyq.cn/news/1350221.html

相关文章:

  • Apache Flink 快速入门
  • 为什么92%的Gemini集成项目在GDPR第32条“安全义务”上失分?——深度拆解加密密钥管理、日志留存与Pseudonymisation实施盲区
  • 54种Barlow字体样式:解决你的专业设计字体选择难题
  • 毕业论文难写?2026年AI论文平台排行榜权威发布,轻松定稿不是梦!
  • 什么是电子铅封管理系统APP 有那些功能
  • Supervisely SDK:让计算机视觉开发效率提升10倍的神器
  • 多地点定位员工考勤小程序管理系统
  • 良心盘点!2026AI写作辅助软件榜单(覆盖 99% 毕业论文需求)
  • 3分钟学会Untrunc:让损坏视频重获新生的开源神器
  • 基于 ComfyUI 本地部署 的「图像 + 音频 → 口型匹配 + 自动运镜」MV 全流程指南
  • WebKit安全漏洞分析与修复实践指南
  • UE5 GAS中安全修改Attribute值的四种正确方式
  • Vue大屏自适应解决方案:如何应对多分辨率设备下的数据可视化挑战
  • Spring AI Alibaba零基础速成(6) ---- 向量化
  • 安卓基本代理检测
  • Windows curl证书错误SEC_E_UNTRUSTED_ROOT解决方案
  • 快速开发AI客服原型时如何利用Taotoken分钟级接入多模型
  • Tokenizer与Embedding
  • 书匠策AI:那个让你论文查重从“红色地狱“直接变“绿色天堂“的神器
  • 魔兽争霸III终极优化指南:5步解决宽屏黑边、FPS限制与地图加载问题
  • SR全光谱反射式膜厚仪
  • Unity+C#开发MMO服务端的务实架构与万人连接实战
  • 2026 北京本土口碑好 GEO 优化公司权威 TOP10 排名,含北京服务商选型指南 +FAQ - 资讯纵览
  • 2026年5月最新鹤岗黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 检测回收中心
  • 【Elasticsearch从入门到精通】第08篇:Elasticsearch集群扩展与运维——水平扩展与节点管理
  • 2026沧州灶台贴膜,专业团队这样选才靠谱 - 品牌企业推荐师(官方)
  • Windows热键冲突终极指南:如何用Hotkey Detective一键定位占用程序
  • Next.js App Router权限绕过漏洞CVE-2025-29927深度解析
  • doctype、charset、meta如何控制整个渲染流水线
  • 2026年5月最新玉林黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 检测回收中心