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

网站建设的目标是什么中国今天刚刚发生的新闻

网站建设的目标是什么,中国今天刚刚发生的新闻,预约做家庭清洁的网站,海报素材网目录 1、类型约束 2、泛型函数 3、泛型结构体 4、泛型接口 5、以接口作为类型约束 关键词:泛型、类型参数、类型约束 Go 语言在 1.18 版本引入了泛型(Generics)特性,可以编写更通用、可复用的代码,泛型可以用于&a…

目录

1、类型约束

2、泛型函数

3、泛型结构体

4、泛型接口

5、以接口作为类型约束


        关键词:泛型、类型参数、类型约束

        Go 语言在 1.18 版本引入了泛型(Generics)特性,可以编写更通用、可复用的代码,泛型可以用于:泛型函数、泛型结构体、泛型接口。

1、类型约束

        在 Go 泛型中,类型参数需要满足一定的约束条件才能被正确使用。常见的约束有:

        comparablecomparable约束要求类型参数必须是可比较的类型,即可以使用==!=进行比较的类型,比如整数、字符串、布尔值等。

        anyany约束表示类型参数可以是任意类型,它是最宽松的一种约束条件。当定义泛型接口、结构体等时,如果希望允许任何类型作为类型参数,就可以使用any约束。

        此外,还可以自定义类型约束来满足更复杂的需求,通过定义接口并在接口中定义一组方法要求,然后让类型参数满足该接口的要求来实现自定义约束。

        常用组合:[T comparable]、[T, U comparable]、[T, U any]、[T any, U comparable]、[T MyInterface]

2、泛型函数

        在函数名后面,中括号中指定:类型参数、类型约束。

        在很多情况下,编译器可以根据实参自动推断类型参数的值,这样就不需要显式地指定类型参数。

//单类型参数
func Compare[T comparable](a, b T) bool {return a == b
}//显示指定类型参数
Compare[int](5, 5)
Compare[string]("hello", "hello")//自动推断类型参数
Compare(5, 5)
Compare("hello", "hello")//多类型参数
func Compare[T comparable, U any](a, b T, c U) bool {fmt.Println("c:", c)return a == b
}//显示指定类型参数
Compare[int, string](1, 2, "c")//自动推断类型参数
Compare[int](1, 2, "c")

3、泛型结构体

        定义包含类型参数的结构体,以便在结构体内部使用不同类型的数据。

        在结构体名后面,中括号中指定:类型参数、类型约束。

        在内部成员中,使用类型参数。

// 泛型结构体
type Pair[T, U any] struct {First  T //泛型T成员变量Second U //泛型U成员变量
}// 泛型成员函数
func (p *Pair[T, U]) print(a T, b U) {fmt.Println(p.First)fmt.Println(p.Second)fmt.Println(a)fmt.Println(b)
}func main() {p := Pair[string, int]{First:  "a",Second: 1,}p.print("b", 2)
}

4、泛型接口

        泛型接口可以定义一组方法,这些方法可以使用类型参数来处理不同类型的数据。

        在接口名后面,中括号中指定:类型参数、类型约束。

        在内部成员方法中,使用类型参数。

type PairInterface[T, U any] interface {Print(T, U)
}// 泛型结构体
type Pair[T, U any] struct {First  T //泛型T成员变量Second U //泛型U成员变量
}// 泛型成员函数
func (p *Pair[T, U]) Print(a T, b U) {fmt.Println(p.First)fmt.Println(p.Second)fmt.Println(a)fmt.Println(b)
}func main() {p := Pair[string, int]{First:  "a",Second: 1,}p.Print("b", 2)
}

5、以接口作为类型约束

        以接口作为【类型约束】,可以在接口中定义一组方法,只有实现了接口的结构体类型才可以作为【类型参数】。

        如下,泛型函数 DoMath 的类型参数 T 的约束类型为接口 Mathable,Interger 实现了接口 Mathable,因此可以作为泛型函数 DoMath 的类型参数。

package mainimport "fmt"// Mathable接口定义了Add和Subtract两个方法要求,作为自定义类型约束
type Mathable interface {Add(other Mathable) MathableSubtract(other Mathable) Mathable
}// DoMath函数,T是类型参数且必须满足Mathable约束
func DoMath[T Mathable](a, b T) T {return a.Add(b).Subtract(b)
}// Integer结构体实现了Mathable接口
type Integer struct {value int
}func (i *Integer) Add(other *Integer) *Integer {return &Integer{value: i.value + other.value}
}func (i *Integer) Subtract(other *Integer) *Integer {return &Integer{value: i.value - other.value}
}func main() {a := Integer{value: 5}b := Integer{value: 3}result := DoMath(&a, &b)fmt.Println(result.value)
}

http://www.yidumall.com/news/102108.html

相关文章:

  • 网站模版怎么样seo交流论坛seo顾问
  • 做外贸的网站市场营销互联网营销
  • 广州营销型网站建设公司哪家名气大软文发稿网站
  • 网站开发建设费用包括那些杭州网站推广与优化
  • 技术支持 嘉兴网站建设百度统计网站
  • 上海网页设计报价徐州网页关键词优化
  • 肇庆做网站公司百度top排行榜
  • 网站建设公司的转型培训机构优化
  • 做网站怎么回本线上宣传渠道和宣传方式
  • 创建网站是怎么赚钱seo短视频保密路线
  • 中考复读学校网站怎么做化工网站关键词优化
  • 品牌的佛山网站建设怎么在百度发布自己的文章
  • 网站建设如果没有源代码淘宝app官方下载
  • 企业网站推广是不是必要的在线超级外链工具
  • 手把手教你做网站 3apple日本网站
  • 高端网站建设费用预算站长之家 seo查询
  • 建设单位网站经费请示怎么搭建属于自己的网站
  • 北京房产网二手房出售排名优化系统
  • 青岛做网站建设多少钱在线种子资源库
  • 公司网站功能模块全媒体广告加盟
  • 做设备外贸b2b网站什么是网络营销平台
  • 网站开发一月工资多少泉州seo托管
  • 做电影网站模板教学关键词排名优化教程
  • 怎么建立一个网站八字测试八爪鱼磁力搜索引擎
  • 大连企业网站建站百度指数查询工具
  • 漯河网站制作网络卖货平台有哪些
  • 1.电子商务网站建设的核心是( )谷歌搜索引擎入口2022
  • 公司注册网站官网seo网站排名软件
  • 论坛模板网站建设西安百度框架户
  • 四川有什么好的网站建设公司百度收录的网页数量