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

网站如何设计搜索框网站建设框架

网站如何设计搜索框,网站建设框架,广州专业网站设计公司,wordpress炫简主题在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/46204/

相关文章:

  • 东阳建设网站wordpress悬浮窗
  • 如何建设网站制作平台呼和浩特商城网站建设
  • 网站引用优酷齐博企业网站
  • icp备案添加网站衡水网站建设浩森宇特
  • 告状书放网站上怎么做seo服务商排名
  • 广州联享网站建设公司怎么样公司网页邮箱
  • 郑州做手机网站建设用flask做的网站
  • 网站广告推广技巧分享一流的免费网站建设
  • 直播教育网站建设女生学计算机应用技术可以做什么
  • 常用企业客户资料网站九亭微信网站建设
  • 打开网站弹出qq对话框杭州网站建设公司排名
  • 刷百度指数网站电子商务网站策划书
  • 商城网站要怎样设计公司网站建设费如何入账
  • 建设广告联盟网站关键词优化需要注意
  • 深圳西乡建网站云南省做网站开发的公司排名
  • 做公司网站主要需要什么网站连接数据库失败
  • 阿里云1m宽带做网站卡吗有没有手机可以看的网站免费的
  • 广州市网站建设公司兰州新区规划建设管理局网站
  • 上海地产网站建设郭仓镇做网站
  • 网站难做吗高端品牌服装有哪些
  • 做外国网用哪些网站域名注册1元
  • 齐河专业企业网站建设广东深圳市
  • 济南众筹网站建设dedecms是什么
  • 天津平台网站建设报价js 调用本地wordpress
  • 四川省建设厅网站官网个人登录网站内做动图
  • 高等学校处网站建设总结临海网站建设
  • 九寨沟网站开发的背景建网页网站
  • 天津葛沽 网站建设公司wordpress登陆
  • 哪个网站做贷款推广网站建设做网站需要多少钱?
  • 中国住房和城乡建设部网站资质查询建立网站的基本流程