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

8uftp与wordpress宁波网站优化公司推荐

8uftp与wordpress,宁波网站优化公司推荐,石家庄学生,265上网导航本节也是GO核心部分#xff0c;很重要。 注#xff1a;由于导包语句已经在19讲#xff08;笔记19#xff1a;面向对象的引入#xff09;展示过了#xff0c;所以这里就不展示了。 一、定义与实现 (1)接口中可以定义一组方法#xff0c;但不需要实现#xff0c;不需要…本节也是GO核心部分很重要。 注由于导包语句已经在19讲笔记19面向对象的引入展示过了所以这里就不展示了。 一、定义与实现 (1)接口中可以定义一组方法但不需要实现不需要方法体。并且接口中不能包含任何变量。到某个自定义类型要使用的时候(实现接口的时候),再根据具体情况把这些方法具体实现出来。 (2)实现接口要实现所有的方法才算实现。 (3)Golang不需要显式的实现接口。Golang中没有implement关键字Golang中实现接口是基于方法的不是基于接口的例如 A接口a,b方法 B接口a,b方法 C结构体实现了a,b方法那么C实现了A接口也可以说实现了B接口只要实现全部方法即可和实际接口耦合性很低比Java松散得多。 (4)接口目的是为了定义规范具体由别人来实现即可。 示例首先在utils中定义接口结构体及方法 //接口的定义定义一组规则或规范由别人实现 type SayHello interface {Say() //声明没有实现的方法 }//接口的实现1.定义类型这里是结构体 type Chinese struct { } type American struct { }//2.实现接口的方法具体实现 func (c Chinese) Say() {fmt.Println(你好) }func (a American) Say() {fmt.Println(hello) }//定义一个函数专门用于各国人打招呼接收被实现的接口变量 func Greet(s SayHello) {s.Say() }然后在main中调用 func main() {c : utils.Chinese{}a : utils.American{}utils.Greet(c)utils.Greet(a) }可能有些人看到我每次调用utils觉得麻烦那么这里就提一个问题如果用别名比如定义utils.Chinese为Chineseutils.Greet(c)还有效吗答案是否定的因为编译器不认为这两个是同一类型自然也就不认为新的类型实现了接口的方法所以别名定义后新类型也必须实现接口的方法 二、一些细节 【1】接口本身不能创建实例比如在Greet中添加以下代码会有警告 var ss SayHello ss.Say()警告nil dereference in dynamic method call这表示ss是空引用空引用是无法进行任何操作的所以运行原来main中的代码一定会报错。 但是接口可以指向一个实现了该接口的变量比如在main中添加如下代码 var s utils.SayHello c s.Say()这里s接收的不再是空引用而是实现了接口的结构体所以能调用接口的方法注意该类型结构体一定要实现方法不实现没法赋值。 【2】只要是自定义数据类型就可以实现接口不仅仅是结构体类型。示例uitils中的定义为 type MyInt intfunc (i MyInt) Say() {fmt.Println(hello, i) }main中的调用为 func main() {var i utils.MyInt 10i.Say() }【3】一个自定义类型可以实现多个接口示例 uitils中的定义为 type InterA interface {A1() } type InterB interface {B1() } type Stu struct { }func (s Stu) A1() {fmt.Println(run A1) } func (s Stu) B1() {fmt.Println(run B1) }main中的调用为 func main() {s : utils.Stu{}s.A1()s.B1() }【4】一个接口可以继承多个接口,这时如果要实现该接口必须将继承接口的方法都实现。示例uitils中的定义为 type InterC interface {InterAInterBC1() }func (s Stu) C1() {fmt.Println(run C1) }main中的调用为 func main() {s : utils.Stu{}s.A1()s.B1()s.C1() }【5】空接口可以接收所有类型未实现的非空接口除外可以理解为所有类型都实现了空接口。由于这个比较简单我就直接在main中写了用到了可变参数涉及的知识点丰富 func printInf(inf ...interface{}) {for _, value : range inf {fmt.Printf(%T , value)} } func main() {// 整浮字符串布数组函数指针切片映射结构体intg, float, str, b, arr : 1, 1.1, 1, true, [1]int{1}pointer, slice, fun : new(int), arr[:], func() {}mapp, stct : make(map[string]int, 2), utils.Stu{}// 创建一个切片包含所有变量inf : []interface{}{intg, float, str, b, arr, pointer, slice, fun, mapp, stct}// 传递切片作为参数注意加上...将切片展开printInf(inf...) }程序输出为 int float64 string bool [1]int *int []int func() map[string]int utils.Stu
http://www.w-s-a.com/news/899042/

相关文章:

  • 网站的切图是谁来做学会网站 建设
  • 交通局网站建设方案答辩ppt模板免费下载 素材
  • 个人摄影网站推介网手机版
  • 有哪些免费的视频网站网站开发和竞价
  • 学校网站如何做广州商城型网站建设
  • 微网站建设哪家便宜易优建站系统
  • 推荐做木工的视频网站毕业设计做的网站抄袭
  • 网站导航页面制作wordpress调用文章阅读量
  • app小程序网站开发品牌购物网站十大排名
  • 用wordpress做购物网站龙岩品牌设计
  • 网站开发是指wordpress系统在线升级
  • 网站建设运营的灵魂是什么意思页面跳转中
  • 家政服务网站源码重庆建网站企业有哪些
  • 怎样分析一个网站做的好坏重庆长寿网站设计公司哪家专业
  • 百度助手app下载苏州seo关键词优化排名
  • 17网站一起做 佛山诸城网站建设多少钱
  • 郑州网站建设培训学校泉州做网站设计公司
  • 西峡做网站深圳建筑工务署官网
  • 单县网站惠州seo计费
  • 万网网站建设 优帮云怎样用记事本做网站
  • 注册域名后网站建设百度指数的功能
  • 怎么做伪静态网站山西网站建设设计
  • 做小型企业网站多少钱衡阳市建设局网站
  • 金华专业网站建设公司网站建设空间和服务器方式
  • 自己做的网站在浏览器上显示不安全吗wordpress revolution slider
  • 西安网站建设推广优化搜索引擎营销
  • 互联网站备案管理工作方案 工信部注册深圳公司需要什么条件
  • 网站网站服务器网站建设 物流
  • 国外开发网站手机网站建设制作
  • 怎么把自己做的网站传网上青岛工程建设监理公司网站