尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

go的泛型

go的泛型
📅 发布时间:2026/6/18 16:18:36

简单例子,把传入的int类型的数据,打印出来,然后返回前两位数值

func forSclice(slice []int) []int {for i, v := range slice {fmt.Println(i, v)}return slice[:2]
}

如果该方法,支持任何形式的入参呢?

func forSclice[T any](slice []T) []T {for i, v := range slice {fmt.Println(i, v)}return slice[:2]
}

能支持任何形式,显然不合理,修改一下,只支持 int 和float32

func forSclice[T int | float32](slice []T) []T {for i, v := range slice {fmt.Println(i, v)}return slice[:2]
}

image
可以使用如下方法,正常调用

	s := forSclice([]int{1, 2, 3, 4, 5})s2 := forSclice([]float32{1.0, 2.0, 3.0, 4.0, 5.0})

补充一点,其实完整的调用,应该是如下的格式,只不过,go能自动推导出来数据格式,所以此处,不需要再在方法名后声明

	s := forSclice[int]([]int{1, 2, 3, 4, 5})s2 := forSclice[float32]([]float32{1.0, 2.0, 3.0, 4.0, 5.0})

如上使用|来声明的方法,比较麻烦的话,可以使用自定义接口来实现

type MyType interface {// 注意,这个接口和普通结构不同,只能声明类型,不能声明方法int | float32
}func forSclice[T MyType](slice []T) []T {for i, v := range slice {fmt.Println(i, v)}return slice[:2]
}

你也可以进行如下声明,MyInt 是基于int定义的新类型,如果让该泛型,支持此类型。有两种功法

  1. 在泛型声明的接口中,声明此类型,例如MyFloat
  2. 使用 ~int,便能自动识别基于 MyInt 这个基于 int 的新类型
type MyInt int
type MyFloat float32type MyType interface {// 注意,这个接口和普通结构不同,只能声明类型,不能声明方法~int | float32 | MyFloat
}

相关新闻

  • 【汽车电子】汽车功能安全标准 ISO 26262
  • 02020405 EF Core基础05-EF Core反向工程、EF Core和ADO.NET Core的联系、EF Core无法做到的事情
  • 在CodeBolcks下wxSmith的C++编程教程——使用菜单和组件

最新新闻

  • 终极指南:如何在Mac上轻松运行Windows软件和游戏
  • SAM 2 微调实战:自定义数据集下的掩码分割落地指南
  • 打破门店限制!2026济南黄金回收行业深度解析,正规平台如何选 - 奢侈品回收评测
  • 爱回收买二手苹果靠谱吗?拆完流程我有了答案 - 新闻快传
  • 2026沈阳奢侈品回收实测!名包出手选这家,省心靠谱不被坑 - 奢侈品回收评测
  • 安徽初三中考没考上高中怎么办?合肥这所优秀中专值得特别关注。 - 我叫小周

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号