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

免费制作单页的网站佛山app开发公司

免费制作单页的网站,佛山app开发公司,做网站技术服务合同,wordpress排版插件泛型 对于强类型语言,在编写代码时不事先指定类型,在实例化的时候作为参数指明类型 参考:https://www.liwenzhou.com/posts/Go/generics/ 什么时候使用泛型? 方法中的代码实现与类型T无关参考:https://juejin.cn/p…

泛型

  • 对于强类型语言,在编写代码时不事先指定类型,在实例化的时候作为参数指明类型

参考:https://www.liwenzhou.com/posts/Go/generics/

什么时候使用泛型?

  • 方法中的代码实现与类型T无关
  • 参考:https://juejin.cn/post/7089321525781725214
  • interface与泛型
    • 操作没有方法的类型,interface类型不适用
    • 每个类型的操作逻辑不一样,泛型不适用

泛型与继承的区别

  • 参考:https://www.cnblogs.com/wdmx/p/9922371.html
  • 泛型是指广泛的类型,是横向的
    • 用在与类型无关的函数中
      • 比如函数将相同的算法作用到不同的类型上,类型在使用的时候再确定
  • 继承是垂直的
    • 不同的类型之间有了共同的方法,会抽象出来一个父类。
    • 多态,相同的方法,不同的实现
  • 我的理解
    • 继承:不同的对象,有相同的方法名,但是实现不同,属于同一个类
    • 泛型:不同的对象,作用在他们身上的逻辑相同,与他们的类型无关,可用泛型。

方法与函数

  • 参考:https://juejin.cn/post/6894899185221697550
  • 方法是包含了接受者的函数
    • 方法属于类
    • 函数就是代码集合

泛型与interface?

  • interface可以认为是基类,走继承的那条道
  • interface也可以实现泛型
  • 参考:https://golang3.eddycjy.com/posts/generics-history/
    • interface在类型上太随意
      • 比如add(a,b),a,b应该是同一类型,但是调用的时候我可以传入不同类型,为了不出问题,还得在函数里面做类型判断
    • 泛型在编译时有类型校验
    • 泛型相较于接口的优点
      • 更安全:编译早期发现错误
      • 更高效:静态类型

代码示例

package mainimport "log"//继承type StructBase interface {GetName() string
}type StructA struct {Name    stringColumnA string
}func (a StructA) GetName() string {return a.Name
}type StructB struct {Name    stringColumnB string
}func (b StructB) GetName() string {return b.Name
}func PrintName(s StructBase) {log.Println(s.GetName())
}// 泛型
func reverse(arr []int) []int {res := make([]int, len(arr))for i := len(arr) - 1; i >= 0; i-- {res[len(arr)-1-i] = arr[i]}return res
}func reverseGeneric[T any](arr []T) []T {res := make([]T, len(arr))for i := len(arr) - 1; i >= 0; i-- {res[len(arr)-1-i] = arr[i]}return res
}func main() {//泛型测试arr := []int{1, 2, 3, 4, 5}log.Println(reverse(arr))log.Println(reverseGeneric(arr))log.Println(reverseGeneric(arr))log.Println(reverseGeneric([]int{1, 2, 3, 4, 5}))arr2 := []string{"a", "b", "c", "d", "e"}log.Println(reverseGeneric(arr2))//继承测试log.Println("=========================================")PrintName(StructA{Name: "structA", ColumnA: "columnA"})PrintName(StructB{Name: "structB", ColumnB: "columnB"})}
http://www.yayakq.cn/news/18141/

相关文章:

  • 莫企业网站建设方案坪地网站建设教程
  • 设置 wap网站网站开发需要哪些硬件
  • 坪山商城网站建设哪家效益快百度上线wordpress结构化数据插件
  • 网站一级页面标题怎么做的中建国能建设集团网站
  • 在线课堂网站开发视频网站如何做引流
  • 用系统建购物网站现在的seo1发布页在哪里
  • 网站开发的分工织梦贷款网站源码
  • 中国建设银行网站结构vi设计公司哪里
  • 英文网站站长工具莱芜二手房出售信息最新房源
  • 化妆品行业网站建设方案深圳网站建设快速排名
  • 网站构建的基本流程wordpress网站迁移
  • 一般做网站短网址生成器是什么
  • 网站建设所需费用万网会员中心登录入口
  • 网站首页图片做多大wap网站方案
  • wordpress 字体代码南平网站怎么做seo
  • 郑州达云通网站建设公司怎么样学校网站备案前置审批
  • 第一ppt网站官网社交媒体营销案例
  • 网站中查看熊掌号怎么做的网站开发需求网
  • 快速做网站费用西地那非片的功效与作用
  • 重庆网站制作系统wordpress自定义查询参数
  • 深圳建筑工程师招聘信息seo怎么做推广
  • 深圳网站设计很棒 乐云践新做网站推广一年多少钱
  • 手机网站布局技术网站建设前期分析
  • wordpress 描文本优化南宁seo多少钱费用
  • 网站流程图wordpress 中文商城主题
  • 发布网站制作网站如何宣传
  • wordpress 支持 标签网站推广优化排名seo
  • apple 网站模板个人适合做什么网站
  • 深圳住房和建设局网站网上申请网站建设违约合同
  • 阿里网站多个域名网站上的图分辨率做多少