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

东莞建设银行客服电话深圳seo推广培训

东莞建设银行客服电话,深圳seo推广培训,网站模板生成,陕西今日新增疫情通报定义一种具有比较能力的类型是一种常见需求,比如对一组相同类型的值进行排序,就需要进行两两比较,那么在Go语言中有没有办法定义一种具有比较能力的Interface,实现该接口的类型都具备比较能力呢,最常见最容易的办法是定…

定义一种具有比较能力的类型是一种常见需求,比如对一组相同类型的值进行排序,就需要进行两两比较,那么在Go语言中有没有办法定义一种具有比较能力的Interface,实现该接口的类型都具备比较能力呢,最常见最容易的办法是定义一个与 any 比较的接口方法:

type Comparable interface {func LessThen(a any) bool
}func Sort[T Comparable] (s []T) {// s[i].LessThen(s[j])
}

具体实现的时候进行类型断言:

type User struct {Age int
}func(u *User) LessThen(a any) bool {u2, ok := a.(*User)if !ok {return false}return u.Age < u2.Age
}

多少缺点意思,没办法约束比较目标的类型与自己相同,于是我们想到可以利用 Go1.18 引入的范型来约束比较目标类型,于是 Comparable 定义改进为:

type Comparable[T any] interface {func LessThen(t T) bool
}

实现改变为:

// 实现接口 Comparable[*User]
func(u *User) LessThen(u2 *User) bool {return u.Age < u2.Age
}

随之 Sort 方法也要修改:

func Sort[T Comparable[*User]] (s []T) {// s[i].LessThen(s[j])
}

但这样的 Sort 方法限制了 T 只能与 *User 比较,要想 T 具有与自身类型比较的能力,Sort 定义需要再次修改:

func Sort[T Comparable[T]] (s []T) {// s[i].LessThen(s[j])
}

这样的 Sort 方法定义就比较通用了,基本实现了我们最初的目标,虽然看起来有点晦涩难懂,但好在接口实现比较简单, 比如:

type Int intfunc (i Int) LessThen(o Int) bool {return i < o
}Sort([]Int{3, 5, 7})type Time time.Timefunc (t Time) LessThen(t2 Time) bool {return time.Time(t).Before(time.Time(o))
}Sort([]Time{Time(time.Now()), Time(time.Now().Add(-time.Minute))})

期待后面版本的 Go 语言的 Interface 和范型加入对 self 的支持,这样的话我们的接口定义就会变得简单直接,比如:

// 伪代码,无法编译// 限制它的实现必须是与实现者自身类型比较,而不是其他类型
type Comparable interface {func LessThen(t self) bool
}

Golang 2 目前有一个提案就是讨论关于 self的: https://github.com/golang/go/issues/28254,有兴趣也可以关注参与

http://www.dtcms.com/wzjs/7817.html

相关文章:

  • 校园网站怎么做免费做网站的平台
  • 不用写代码做网站网络营销招聘岗位有哪些
  • 设计的比较好的网站app推广代理去哪里找
  • 广州自适应网站建设必应搜索引擎怎么样
  • 关于加强政府网站建设和管理工作的意见北京seo设计公司
  • 做论坛网站的应用淮北seo排名
  • 2019年 dede网站网络营销怎么推广
  • 做盗链电影网站怎么样全网关键词云怎么查
  • 响应式网站代码规范广告推广赚钱在哪接
  • 专门做油站数据的网站企业微信营销管理软件
  • 刚创业 建网站培训机构排名前十
  • 网络广告营销对应案例电脑优化是什么意思
  • 推荐西安优秀的响应式网站建设公司大数据分析培训机构
  • 鄂尔多斯市建设厅官方网站郑州seo优化顾问热狗
  • 杭州如何设计网站首页卖友情链接赚钱
  • 哪个网站做正品女装seo优化的技巧
  • html怎么弄浙江seo博客
  • 怎么把asp网站做的好看cnzz站长统计工具
  • 信誉比较好的商家可做网站友情链接
  • 中国做网站正邦论坛平台
  • 影视网站建设南京seo网站优化推广
  • 网站开发人员职责seo外包大型公司
  • 网站建设内容规划淘宝关键词排名优化
  • 给菠菜网站做外包有哪些推广平台和渠道
  • 免费建立国外网站关键词工具
  • 专做视频素材的网站如何提高seo关键词排名
  • 移动互联网开发报告总结湖州网站seo
  • 微信小程序官网客服seo搜索引擎优化就业指导
  • 哪个网站是做安全教育网站建设优化推广
  • 企业网站推广和营销网页推广区别龙岗seo优化