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

建产品网站怎么做深圳网站建设 宝华大厦

建产品网站怎么做,深圳网站建设 宝华大厦,软文营销定义,网页制作工具的选择与网站整体风格是有关系的引言 Go 从 1.18 开始正式支持泛型,带来了更强的类型抽象能力,使得我们可以编写更通用、可复用的代码。本文档将介绍下泛型与应用的一些内容 什么是泛型 泛型(Generic)是一种允许你编写“参数化类型”的编程方式。你可以将类型…

引言

Go 从 1.18 开始正式支持泛型,带来了更强的类型抽象能力,使得我们可以编写更通用、可复用的代码。本文档将介绍下泛型与应用的一些内容

什么是泛型

泛型(Generic)是一种允许你编写“参数化类型”的编程方式。你可以将类型视为函数的参数,在函数或结构体中使用不同的类型而不重复写代码。

这里我们用一个简单的例子介绍一下基本的应用。

  • 求和函数的应用

无泛型写法

func SumInts(nums []int) int {total := 0for _, v := range nums {total += v}return total
}func SumFloat64s(nums []float64) float64 {total := 0.0for _, v := range nums {total += v}return total
}

泛型写法

import "golang.org/x/exp/constraints"func Sum[T constraints.Integer | constraints.Float](nums []T) T {var total Tfor _, v := range nums {total += v}return total
}

调用代码

ints := []int{1, 2, 3}
floats := []float64{1.1, 2.2, 3.3}fmt.Println(Sum(ints))    // 输出:6
fmt.Println(Sum(floats))  // 输出:6.6

看上去是不是一下就清爽多了?函数只写一次,类型可以变化 。这就是简单的泛型的应用。

那么对泛型你可以理解成一句话:

  • 泛型是对类型做"参数化"处理,让函数或结构体能复用不同的数据类型,而不重复写代码。

用人话说就是:

  • 我不想因为参数是 int 就写一遍函数,参数是 float64 又写一遍,我只想写一次,能通用就行。

Go 泛型应用

泛型函数

泛型函数允许你对函数的参数和返回值类型进行参数化

基本语法:

func FuncName[T TypeConstraint](param T) T {// 函数体
}

例如:交换两个值

func Swap[T any](a, b T) (T, T) {return b, a
}
  • T 是类型参数
  • any 表示“任意类型”(等价于 interface{})
    • Go 1.18 之前(也就是泛型正式加入之前),interface{} 是 Go 中唯一的“通用类型”。它表示一个空接口,可以接受任何类型的值
  • (T, T) 表示返回两个同类型的值

泛型结构体

你也可以定义"带类型参数"的结构体或类型:

type Stack[T any] struct {items []T
}func (s *Stack[T]) Push(item T) {s.items = append(s.items, item)
}func (s *Stack[T]) Pop() T {n := len(s.items)item := s.items[n-1]s.items = s.items[:n-1]return item
}

泛型约束

Go 中泛型之所以能“限制”传入类型,是靠"约束"实现的。

常用约束方式:

  • any

代表任何类型(最常用,类似 interface{})

func Print[T any](val T) {fmt.Println(val)
}
  • 使用 constraints 包(来自 golang.org/x/exp/constraints)

你需要先引入:

import "golang.org/x/exp/constraints"
约束名类型限制
constraints.Integer所有整数类型(含有符号和无符号)
constraints.Signed只允许有符号整数(int, int64 等)
constraints.UnSigned只允许无符号整数(uint, uint64 等)
constraints.Float只允许浮点数(float32, float64)
constraints.Ordered允许比较大小的类型(数字 + string)
示例:支持排序的 Min 函数
func Min[T constraints.Ordered](a, b T) T {if a < b {return a}return b
}

注意事项

注意点说明
不能使用 +、-、<、== 等运算符,除非加了对应约束(如 Ordered)
泛型类型不能在运行时反射(不能直接用 reflect.TypeOf[T])
编译器报错信息可能较晦涩(需要多实践)
不能对泛型类型的字段做类型断言(x.(int))
泛型类型定义不能嵌套非确定类型(除非有组合约束)

实际用例

通用 map 函数

func Map[T any, R any](in []T, f func(T) R) []R {out := make([]R, len(in))for i, v := range in {out[i] = f(v)}return out
}

总结

✅ 推荐使用泛型的场景:

  • 你需要写工具类、公共库(如缓存、通用排序等)
  • 同样的逻辑重复出现在多个类型中(int、float、string 等)
  • 你想限制传入类型的范围,避免滥用 interface{}

❌ 不推荐使用泛型的场景:

  • 项目中类型固定(比如订单 ID 永远是 int64
  • 团队成员不熟悉泛型,增加理解和维护成本
  • 为“使用泛型而使用泛型”会让代码变复杂

文章转载自:

http://5tsiG0wa.wdhzk.cn
http://UupuibsP.wdhzk.cn
http://TAmvroU2.wdhzk.cn
http://ndjkcRge.wdhzk.cn
http://0KGQcWMp.wdhzk.cn
http://8IgOtwZC.wdhzk.cn
http://8QNKHUbR.wdhzk.cn
http://icipFedD.wdhzk.cn
http://t01qbtyn.wdhzk.cn
http://lXpxOZDe.wdhzk.cn
http://dh6axz4y.wdhzk.cn
http://T7sORmYT.wdhzk.cn
http://ioWDyUBv.wdhzk.cn
http://rYtlZbB0.wdhzk.cn
http://1ZS2RYM8.wdhzk.cn
http://Ytk5BcJH.wdhzk.cn
http://WQbB4F2S.wdhzk.cn
http://tCBMDj1Y.wdhzk.cn
http://H6ENp1qT.wdhzk.cn
http://H2dojmww.wdhzk.cn
http://dUVtfKW1.wdhzk.cn
http://tNolhmve.wdhzk.cn
http://cgwcVrh7.wdhzk.cn
http://bNAmbNo0.wdhzk.cn
http://OjSUyINC.wdhzk.cn
http://XBK161UO.wdhzk.cn
http://y2mrsl8T.wdhzk.cn
http://mbzUj5eX.wdhzk.cn
http://ETHcRfav.wdhzk.cn
http://ZN1qfSM3.wdhzk.cn
http://www.dtcms.com/wzjs/715512.html

相关文章:

  • 孝感网站制作公司公司网站维护更新流程
  • 网上外贸网站怎么做百度公司的发展历程
  • 免费个人网站建设网站地图案例
  • 天津网站备案时间搜索引擎营销实践报告
  • 网站设计分辨率ps修图软件
  • 上海怎么做网站python软件开发
  • 企业手机网站建设资讯win2003 网站服务器
  • 猎奇网站模板国家企业信用公示系统官网(全国)
  • 男女生做内个的网站中国做二手房最大的网站有哪些
  • 网站后台的制作微信公众号文章发布
  • 哪种网站语言最好seo线下培训课程
  • 自助业务网站系统网站做系统叫什么名字吗
  • 咨询公司网站模板企业简介优势项目案例等模块点选即用
  • 网站建设及使用方案在线建站哪个网站好
  • 网站建设细化流程网站建设有哪些优质公众号
  • 如何自己做游戏网站网页界面设计艺术教程
  • 网站后台功能中国制造网下载
  • 做快餐料包的网站有哪些手机可以开发软件吗
  • 贵州快速整站优化网站开发商外包
  • 都有哪些网站无锡网站设计多少钱
  • 医院网站建设套餐方案网站外链平台的建设方法平台类型(至少5个)?
  • 网站建站流程图typecho导入wordpress
  • 如何给自己网站做网站优化网络服务器搭建
  • wordpress能做appseo佛山
  • 企业网站建设知识应用技能土特产网站建设状况
  • 北京pk10网站建设wordpress4.6免费主题
  • 一般网站建设大概需要多少钱建设一个行业性的网站价格
  • 网站主页面设计php简单企业网站源码
  • 90设计手机站上海设计工作室排名
  • 工作室网站开发郑州做网站msgg