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

做教育导航的网站淮南网络科技有限公司

做教育导航的网站,淮南网络科技有限公司,潍坊建站程序,个人简介干净短句5 泛型 类型参数 s 是满足内置约束 comparable 的任何类型 T 的切片。 x 也是相同类型的值。comparable 是一个有用的约束,它能让我们对任意满足该类型的值使用 和 ! 运算符。 func Index[T comparable](s []T, x T) int// Index 返回 x 在 s 中的下标&#xff…

5 泛型

类型参数

  • s 是满足内置约束 comparable 的任何类型 T 的切片。 x 也是相同类型的值。
  • comparable 是一个有用的约束,它能让我们对任意满足该类型的值使用 ==!= 运算符。
func Index[T comparable](s []T, x T) int
// Index 返回 x 在 s 中的下标,未找到则返回 -1。
func Index[T comparable](s []T, x T) int {for i, v := range s {// v 和 x 的类型为 T,它拥有 comparable 可比较的约束,// 因此我们可以使用 ==。if v == x {return i}}return -1
}func main() {// Index 可以在整数切片上使用si := []int{10, 20, 15, -10}fmt.Println(Index(si, 15))// Index 也可以在字符串切片上使用ss := []string{"foo", "bar", "baz"}fmt.Println(Index(ss, "hello"))
}2
-1

练习 泛型类型

作为练习,请为此链表的实现添加一些功能。

  • 用全局函数 AddDelete,传递双指针 **List[T],避免方法接收者语法问题。
  • Tcomparable 约束,保证可以用 ==
  • 其他方法(如 FindTraverse)仍然用方法接收者 *List[T],这样 intList.Traverse() 能正常调用。
  • 无比较使用T any。有比较操作使用T comparabel
package mainimport "fmt"// List 表示一个可以保存任何类型的值的单链表。
type List[T any] struct {next *List[T]val  T
}// NewList 创建一个新的空链表(返回头指针为 nil)
func NewList[T any]() *List[T] {return nil
}// Add 在链表末尾添加一个节点
func Add[T any](l **List[T], value T) {newNode := &List[T]{val: value}if *l == nil {*l = newNode} else {current := *lfor current.next != nil {current = current.next}current.next = newNode}
}// Delete 删除链表中第一个值等于 value 的节点
func Delete[T comparable](l **List[T], value T) {if *l == nil {return}if (*l).val == value {*l = (*l).nextreturn}current := *lfor current.next != nil && current.next.val != value {current = current.next}if current.next != nil {current.next = current.next.next}
}// Find 查找链表中第一个值等于 value 的节点
func Find[T comparable](l *List[T], value T) *List[T] {current := lfor current != nil {if current.val == value {return current}current = current.next}return nil
}// Traverse 遍历链表并打印每个节点的值
func Traverse[T any](l *List[T]) {current := lfor current != nil {fmt.Print(current.val, " ")current = current.next}fmt.Println()
}//链表长度
func Len[T any](l *List[T]) int {current := lcount:=0for current != nil {count++current = current.next}return count
}func Reverse[T any](l *List[T]) *List[T] {var newHead *List[T] = nilcurrent := lfor current != nil {next := current.nextcurrent.next = newHeadnewHead = currentcurrent = next}return newHead
}func main() {// 示例:创建 int 类型链表并操作var intList *List[int] = NewList[int]()Add(&intList, 1)Add(&intList, 2)Add(&intList, 3)fmt.Print("链表内容: ")Traverse(intList) // 输出: 1 2 3found := Find(intList, 2)if found != nil {fmt.Println("找到节点:", found.val)}Delete(&intList, 2)fmt.Print("删除后链表内容: ")Traverse(intList) // 输出: 1 3fmt.Printf("链表长度:%v\n",Len(intList))intList=Reverse(intList)fmt.Print("翻转链表内容: ")Traverse(intList) // 输出: 3 1
}
http://www.dtcms.com/wzjs/589233.html

相关文章:

  • 可以建立网站的平台wordpress下载插件
  • 海尔集团网站建设南通网站建设入门
  • 郑州阿里巴巴网站建设北京seo公司排名
  • 申请建设网站的报告书Sage WordPress商城主题
  • 免费企业网站模板psdgoole官网
  • 平时发现同学做的ppt找的材料图片不错_不知道从哪些网站可以获得毕业去设计公司还是企业
  • app制作简易网站太原seo整站优化
  • 北京房山网站建设网站推广的方法有哪些
  • 长春做商业平台网站网址查询域名解析
  • 怎么做页游网站运营快递系统查询网站怎么做
  • 信誉好的苏州网站建设哪儿能做邯郸网站建设
  • 高端网站建设推广有哪些网站能够免费找到素材
  • 美文网站源码在哪里建设网站
  • 网站开发考核做外汇哪个网站看外国消息
  • 网站建设相关网站代理服务器上外网
  • 快递网站建站需要什么龙岗区建设工程交易中心
  • 中国企业500强标准游戏优化软件
  • 外贸公司网站开发步骤广西建设职业学院技术教务系统网站
  • 网站建设公司net2006网站无障碍的建设方面空缺
  • 提升网站流量该怎么做电影网站建设教程
  • 如何制作网站站点网站排名易下拉技术
  • 沈阳自助模板建站企业组网方案
  • vs 手机网站开发江门外贸网站建设
  • 回收网站怎么做建立收费网站
  • 网站推广预期达到的目标网页app开发培训班
  • wordpress 调用画廊石家庄做网站优化公司
  • 南京网站制作招聘ae射频电源成色
  • 网站的后台管理员系统建设教程做网站需要具备什么语言
  • 大连网站排名网络推广公司大连展厅设计公司
  • 做网站最好要买什么东西最新互联网企业排名