当前位置: 首页 > 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.jsqmd.com/news/867000/

相关文章:

  • 传统开发VS低代码开发,谁更胜一筹?
  • 微服务架构下的旺店通与畅捷通T+系统集成
  • 54种Barlow字体样式:解决你的专业设计字体选择难题
  • 海洋涡旋识别与追踪:5个专业技巧快速掌握Py Eddy Tracker的核心功能
  • 为什么92%的Gemini集成项目在GDPR第32条“安全义务”上失分?——深度拆解加密密钥管理、日志留存与Pseudonymisation实施盲区
  • ZenTimings:AMD Ryzen内存时序监控的终极指南
  • 广州搬家公司推荐:大黄蜂搬家业界翘楚 - 17322238651
  • Unity Ctrl+Shift+P暂停快捷键失效的根因与修复方案
  • 毕业论文难写?2026年AI论文平台排行榜权威发布,轻松定稿不是梦!
  • 什么是电子铅封管理系统APP 有那些功能
  • DeepSeek VL轻量化部署迫在眉睫!基于TensorRT-LLM的INT4量化+视觉编码器剪枝实战(延迟降低63%,精度仅损0.8%)
  • Supervisely SDK:让计算机视觉开发效率提升10倍的神器
  • 真彩千帧,竞力向上|EVNIA 弈威全球首款原生FHD真千帧护眼新品发布
  • 书匠策AI:那个让你论文查重从“红色地狱“直接变“绿色天堂“的神器
  • 全开源进销存源码ERP系统深度测评:部署实测+完整教程+二开
  • 如何快速掌握so-vits-svc歌声转换技术:面向开发者的完整实践指南
  • 良心盘点!2026AI写作辅助软件榜单(覆盖 99% 毕业论文需求)
  • 利用llama-vulkan版本测试腾讯混元Hy-MT2多语言翻译模型
  • 安卓逆向环境检测对抗:Unidbg与Unicorn全链路伪装实战
  • Tokenizer与Embedding
  • 3分钟学会Untrunc:让损坏视频重获新生的开源神器
  • AI——LangChain 三大核心概念
  • After Effects (AE)2026超详细保姆级下载安装教(新手零基础适用)
  • LangChain的传统 Chain 和 LangGraph 选型区别
  • UE5 GAS中安全修改Attribute值的四种正确方式
  • WebKit安全漏洞分析与修复实践指南
  • 普宁坐月子哪家好|实地看了3家之后的真实对比 - 品牌观察
  • 微信自动化终极指南:5个简单步骤让Python帮你处理日常聊天任务
  • 安卓基本代理检测
  • Java HTTPS证书信任链原理与cacerts配置实战