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

文化传媒网站php源码阳江网站开发

文化传媒网站php源码,阳江网站开发,网页升级未成年人自觉离开,东莞最新确诊病例在哪里在go的内置包slices中, 所有的函数函数都使用了泛型, 各种各样的泛型, 可以说这个包绝对是go语言泛型学习的最佳实践之一! 来,先来瞄一眼,看看这个slices包里面的函数原型定义: func BinarySe…

在go的内置包slices中, 所有的函数函数都使用了泛型, 各种各样的泛型, 可以说这个包绝对是go语言泛型学习的最佳实践之一!

来,先来瞄一眼,看看这个slices包里面的函数原型定义:

func BinarySearch[S ~[]E, E cmp.Ordered](x S, target E) (int, bool)
func BinarySearchFunc[S ~[]E, E, T any](x S, target T, cmp func(E, T) int) (int, bool)
func Clip[S ~[]E, E any](s S) S
func Clone[S ~[]E, E any](s S) S
func Compact[S ~[]E, E comparable](s S) S
func CompactFunc[S ~[]E, E any](s S, eq func(E, E) bool) S
func Compare[S ~[]E, E cmp.Ordered](s1, s2 S) int
func CompareFunc[S1 ~[]E1, S2 ~[]E2, E1, E2 any](s1 S1, s2 S2, cmp func(E1, E2) int) int
func Concat[S ~[]E, E any](slices ...S) S
func Contains[S ~[]E, E comparable](s S, v E) bool
func ContainsFunc[S ~[]E, E any](s S, f func(E) bool) bool
func Delete[S ~[]E, E any](s S, i, j int) S
func DeleteFunc[S ~[]E, E any](s S, del func(E) bool) S
func Equal[S ~[]E, E comparable](s1, s2 S) bool
func EqualFunc[S1 ~[]E1, S2 ~[]E2, E1, E2 any](s1 S1, s2 S2, eq func(E1, E2) bool) bool
func Grow[S ~[]E, E any](s S, n int) S
func Index[S ~[]E, E comparable](s S, v E) int
func IndexFunc[S ~[]E, E any](s S, f func(E) bool) int
func Insert[S ~[]E, E any](s S, i int, v ...E) S
func IsSorted[S ~[]E, E cmp.Ordered](x S) bool
func IsSortedFunc[S ~[]E, E any](x S, cmp func(a, b E) int) bool
func Max[S ~[]E, E cmp.Ordered](x S) E
func MaxFunc[S ~[]E, E any](x S, cmp func(a, b E) int) E
func Min[S ~[]E, E cmp.Ordered](x S) E
func MinFunc[S ~[]E, E any](x S, cmp func(a, b E) int) E
func Replace[S ~[]E, E any](s S, i, j int, v ...E) S
func Reverse[S ~[]E, E any](s S)
func Sort[S ~[]E, E cmp.Ordered](x S)
func SortFunc[S ~[]E, E any](x S, cmp func(a, b E) int)
func SortStableFunc[S ~[]E, E any](x S, cmp func(a, b E) int)

怎么样,是不是全部都是清一色的泛型函数?

来,我们先拿第一个大名鼎鼎的二分查找函数来说说

func BinarySearch[S ~[]E, E cmp.Ordered](x S, target E) (int, bool)

这个函数里面定义了S E泛型约束  [S ~[]E, E cmp.Ordered]  这个的意思就是 参数S 的底层类型必须是切片E, 同时 E类型必须是已排序的切片。

分解:

S ~[]E 约束S类型的底层类型必须是E的切片

E cmp.Ordered  这个约束E的类型必须是已排序的类型, 这里的emp.Ordered是一个专门用来做参数类型约束的接口定义。

E cmp.Ordered接口定义如下:

type Ordered interface {~int | ~int8 | ~int16 | ~int32 | ~int64 |~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr |~float32 | ~float64 |~string
}

可见这个 cmp.Ordered 接口定义了他所能接收的参数类型列表,只要泛型约束里面使用了他, 那你的参数的类型就只能是这个里面定义的类型之一。

再来一个

func SortFunc[S ~[]E, E any](x S, cmp func(a, b E) int)

这个函数的泛型约束[S ~[]E, E any]里面 有一个 any  , 这个在go语言里面表示任意类型, 他是一个类型定义,即 type any = interface{}  ,  其他和上一个的泛型约束类似。

另外一个需要说的就是 comparable 这个泛型约束, 这个也是一个类型定义,即 type comparable interface{ comparable }  ,  comparable这个泛型约束是go语言的底层定义的一个约束接口,他约束数据类型必须是这些类型之一: booleans, numbers, strings, pointers, channels,  可比较类型的数组,所有字段是可比较类型的结构体

函数原型: func Index[S ~[]E, E comparable](s S, v E) int

示例代码:

package mainimport ("fmt""slices"
)func main() {numbers := []int{0, 42, 8}fmt.Println(slices.Index(numbers, 8))fmt.Println(slices.Index(numbers, 7))
}

参考:

slices package - slices - Go Packages

http://www.yayakq.cn/news/765294/

相关文章:

  • 海南网站设计学校网站建设的目的
  • word超链接网站怎么做网站建设企业的市场分析
  • 网站建设预算费用html怎么做
  • 四川网站建设外包iis7.5发布网站教程
  • 在线网站建设平台哪个好h5制作开发地点
  • 如何在阿里云上建设网站优秀电子商务网站
  • 住房和建设厅网站首页wordpress ip被禁用
  • 网站的小图标怎么做的网络设计图纸是什么
  • 杭州企业网站建设公司怎么样网上购物平台类型有哪些
  • 公司网页网站建文库类网站建设建议及经验
  • 无锡市城乡和住房建设局网站泉州一个网站多少钱
  • 网站建设供需龙岗网站制作效果
  • 百度网站分析如何做招聘网站效果分析
  • 网站联盟有哪些电子商务网站的建设与规划
  • centos6.6做网站广州电商网站开发
  • 社科联网站建设情况汇报文件大小 wordpress
  • 建个普通网站北京建设网上银行
  • 制作企业网站首页设计说明ai生成
  • 云建站的正确步骤建网站费用
  • 手机app开发网站模板家居企业网站建设教程
  • 北京住房与建设部网站首页wordpress邮件发送超时
  • 免费php mysql网站陕西恒业建设集团网站
  • 朋友做的网站图片不显示不出来的网页设计二级页面
  • 商务科技网站建设wordpress写文章出现排版乱
  • 2003服务器怎么挂网站企业vi设计公司企业vi设计欣赏
  • 网上学电脑培训中心上海做网站优化
  • 医院电子网站建设公司网站备案需要每年做吗
  • 购物网站制作免费济南网站建设成之运维
  • 发软文提高网站权重金网科技
  • 建设网站什么语言比较合适多个网站域名 是新增接入