范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

go1。18泛型初体验

  go 1.18泛型初体验
  go.1.18beta版发布,众所周知这个go.1.18版本会默认启用go泛型。这个版本也号称go最大的版本改动。 初识golang的泛型
  我们写一个demo来看看go的泛型是长啥样  package main  import ( 	"fmt" )  type OrderTypes interface { 	~int | ~float32 | ~string }  func max[T OrderTypes](x, y T) T { 	if x > y { 		return x 	} 	return y }  func main() { 	fmt.Println(max(1, 11), max("abc", "eff")) }
  ok run 以下代码 $ go run main.go 11 eff
  ~int | ~float32 | ~string我们看到了新的语法,~是新的操作符,主要用来做类型约束使用, ~int代表类型约束为int类型,~int | ~float32 | ~string则代表约束为 int 或者 float32 或者 string。上面额例子中,这三个类型刚好是可以比较的能进行 ">" 操作的。
  当然上面的代码是演示用的,在真正的项目中我们应该使用标准constraints提供的Ordered来做约束。 import ( 	"constraints" ) func max[T constraints.Ordered](x, y T) T { 	if x > y { 		return x 	} 	return y }
  constraints标准库定义了一下常用的类型约束,如Ordered,Signed,Unsigned,Integer,Float。 提高生产力的泛型
  我们通过下面的例子来看看泛型,如何提高我们的生产力。我们将为所有slice类型添加三件套map,reduce,filter func Map[Elem1, Elem2 any](s []Elem1, f func(Elem1) Elem2) []Elem2 { 	r := make([]Elem2, len(s)) 	for i, v := range s { 		r[i] = f(v) 	} 	return r }  func Reduce[Elem1, Elem2 any](s []Elem1, initializer Elem2, f func(Elem2, Elem1) Elem2) Elem2 { 	r := initializer 	for _, v := range s { 		r = f(r, v) 	} 	return r }  func Filter[Elem any](s []Elem, f func(Elem) bool) []Elem { 	var r []Elem 	for _, v := range s { 		if f(v) { 			r = append(r, v) 		} 	} 	return r }  func Silce() { 	sliceA := []int{3, 99, 31, 63} 	//通过sliceA 生成sliceB 	sliceB := Map(sliceA, func(e int) float32 { 		return float32(e) + 1.3 	}) 	fmt.Println(sliceB) 	//找最大值 	max := Reduce(sliceB, 0.0, func(a, b float32) float32 { 		if a > b { 			return a 		} 		return b 	}) 	fmt.Println(max) 	//过滤sliceA中大于30的组成新的slice 	sliceC := Filter(sliceA, func(e int) bool { 		if e > 30 { 			return true 		} 		return false 	}) 	fmt.Println(sliceC) }  func main() { 	Silce() } $ go run main.go  [4.3 100.3 32.3 64.3] 100.3 [99 31 63] 带泛型的struct
  接下来我们看一下带泛型的struct //定义的时候需要加约束 type Student[T constraints.Unsigned] struct { 	Age T }  //后续struct方法编写的时候 约束就不能写了 func (s *Student[T]) GetAge() T { 	return s.Age }
  我们初始化带泛型的结构图 age := uint(3) s := &Student[uint]{Age: age} fmt.Println(s.GetAge()) //3 s1 := &Student[uint16]{Age: uint16(age)} fmt.Println(s1.GetAge()) //3 总结
  go的泛型目前还没有官方推荐的最佳实践,标准库的代码也基本没改成泛型。但总归走出支持泛型这一步,后续丰富标准库应该是后面版本的事情了。再看go2代码的时候发现一个有意思的东西--orderedmap。感兴趣的同学可以去看看。

36氪首发微链科技获数千万人民币A轮融资,自主研发提供高精度高可靠性的机器人3D视觉产品作者韦世玮编辑石亚琼36氪获悉,近日机器人3D视觉创企微链科技宣布完成数千万人民币A轮融资,由中博聚力领投海南泰益跟投。本轮融资将主要用于加强研发扩建产品交付能力拓展市场三个方面。164家企业提交机密数据!美国公布全球芯片缺货真相当地时间1月25日,美国商务部公布了2021年9月开启的半导体供应链风险信息请求(RFI)的调查结果。该报告揭示了有关半导体短缺的程度及原因,并强调了美国总统拜登提议的520亿美元我微信有两个号,密码一样,登上第二个号后,登不上第一个,第一个号很重要,如何解决?拿两个手机不就行了。不行那三个,再办个号,自己和自己玩,你能玩一月。21世纪了还有人问这种低级问题?很多手机都有应用分身或者叫应用双开,没有的手机可以下载双开应用搞定。你用一个微信动视暴雪(ATVI。US)鉴于与微软(MSFT。US)的交易待定,公司将不提供与四季度收益发布相关的财务指引动视暴雪(ATVI。US)鉴于与微软(MSFT。US)的交易待定,公司将不提供与四季度收益发布相关的财务指引。动视暴雪(ATVI。US)公司简介动视暴雪是一家由维旺迪游戏与美国动视运算符之三比较运算符运算符之三比较运算符!instanceof结论1。比较运算符的结果是boolean类型2。区分和classCompareTestpublicstaticvoidmain(Strin商务部发言人就美撤销中国联通在美214电信运营牌照发表谈话来源昆明日报掌上春城针对美国联邦通信委员会发布命令撤销中国联通公司在美214电信运营牌照,商务部新闻发言人28日发表谈话说,美相关部门泛化国家安全概念,滥用国家力量,在缺乏事实依据国产操作系统的希望,被称中国版微软,UOS能否替代Windows?文JING审核子扬校正知秋操作系统市场长期被美国厂商垄断,微软Windows和苹果MACOS份额之和超过97。这不仅让美国掌握了信息技术产业发展主动权,还刮走了桌面终端设备大部分利国家广播电视总局公布2021年度中国广播电视行业十大科技关键词人民网北京1月29日电(记者杨虞波罗)日前,国家广播电视总局公布2021年度中国广播电视行业十大科技关键。2021年度中国广播电视行业十大科技关键词反映了2021年我国广电科技领域我国移动支付在消费中占比超8成警惕新风险点原标题我国移动支付在消费中占比超8成买卖银行卡成为新风险点新春消费旺季已开启,如今在消费时,手机的使用率越来越高。中国银联26日发布最新报告,通过对全国超过9万人的调查,移动支付在怒怼加班文化之外还需多方求解连续20多小时高强度设计和开发持续1周高强度完成了200项产品和设计走查修改。这份本来是即时激励表彰的文档成了员工爆发不满的一根稻草。近日,多个媒体报道的截图显示,25日深夜,腾讯过年真不必装阔!8000买个新苹果,得了面子,丢了里子和日子兄弟们,跟大伙说一句实在话,过年回家看亲访友,千万不要再装阔啦,千万不要和我一样,后悔到现在。自己以前真的是太傻了,爱虚名,总是想着衣锦还乡荣归故里,到了过年的时候,总是要穿上一身
华为MateXs2上手体验很轻很薄,价格亲民,你喜欢吗?华为MateXs2已经拿到手了,体验了一天,简单说说感受。因为市面上的折叠屏基本上都已经体验过,本来对折叠屏没什么感觉,但是当拿到这块华为MateXs2的时候还是有些惊艳的。惊艳我5G不成功,6G将更没希望,成本是关键当下5G商用还在推进当中,因为一些原因,各方已开始宣传6G,以为6G能带来更好的体验,然而考虑到当下5G的现实,采用更高频段的6G恐怕更难有成功的希望,其中的关键就在于成本。一成本电商会员纷纷涨价,你还感觉值吗?近日,电商会员涨价进入快车道,自去年涨价后,腾讯视频再次宣布VIP会员涨价,随后京东PLUS腾讯视频会员年卡也上调价格。记者注意到,目前各大电商平台卖会员已经成了常规操作,会员费一权威定调!互联网大厂的朋友可以安心度假了吗?老詹小注前天,中央政治局召开会议,这是不寻常时期召开的一次不寻常的会议。会议对于人们关心的互联网平台经济意味着什么?下面这篇文章,作了深入剖析,值得一读。权威定调!互联网大厂的朋友中年男人自学编程到底能达到什么水平?来看看这个鄙人锅大虾2018年自学python到现在,也四年有余了,每天下班辅导作业搞卫生,等老婆孩子睡着了,拿出电脑接着撸代码。编程并非是我的主业,记得2018年带小孩报了个编程培训班(就影像能力强大,三星GalaxyS22系列手机引领时尚新方向手机摄影已经融入到了百姓的日常生活,从绝对数量上讲,全球最大的摄影消费人群不再是照相机,而是如今的智能手机。伴随着网民微博数量的急剧增加,人人都是新闻信息的传播者已经成为铁定的事实有员工因为在公司被调岗位,工资收入比原岗位低了,跑去市里劳动局投诉,你怎么看?如果是未经员工允许,双方未达成一致,员工去劳动局投诉是维护劳动权益的政策操作。劳动法规律劳动合同法第35条规定用人单位与劳动者协商一致,可以变更劳动合同约定的内容。变更劳动合同,应品鉴官是做什么的,有工资吗?俺没当官的命,更没资格,能力当品鉴官。闲着无聊,倒想知道几个问题假如品鉴官主营棺材铺的。假如条友是主营医疗服务治病救人的。他们不在一个起跑线上,一个是为逝者服务的,一个为人能长寿服链得得独家马斯克的推特时代会成为Web3。0的社交产品吗?图片来源视觉中国引子4月25日,社交媒体平台推特公司选择接受了埃隆马斯克的收购协议,马斯克将以每股54。20美元的价格完成对推特的收购,这笔交易将在今年之内完成。而在马斯克完成了对小米终止更新产品本来还期待上一台小米手机,更新MIUI13的,结果就不更新了。这是在IT之家看到的消息,心凉了啊,好歹多支持一代嘛!恐惧恐惧恐惧恐惧恐惧恐惧恐惧恐惧恐惧恐惧恐惧恐惧恐惧恐惧恐惧恐惧浅析天道中的HIFI音响(一),奢侈的接线方式多年前追的电视剧天道,至今怀念,常被精彩的剧情所感动,更被剧中的HIFI音响所吸引。曾几何时,一直梦想着去打造一套同款音响,邀请三五好友一起聆听天国的女儿,试着去分辨三个版本的流浪