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

手机网页前端开发seo有名气的优化公司

手机网页前端开发,seo有名气的优化公司,wordpress文章怎么生成标签,做地方的门户网站在Go语言中接口(interface)是一种类型,一种抽象的类型。 我们编写一个猫,一个狗的结构体。 然后编写一个吃饭的函数,可以接收,猫或者狗的结构体,让猫的表现行为吃鱼,狗的表现行为为…

在Go语言中接口(interface)是一种类型,一种抽象的类型。

我们编写一个猫,一个狗的结构体。

然后编写一个吃饭的函数,可以接收,猫或者狗的结构体,让猫的表现行为吃鱼,狗的表现行为为吃骨头

用传统的方法,无法实现一个参数既是猫也是狗

此时我们就需要把他们的公共方法提取到接口。在定义一个吃饭的接口

type cat struct{}

type dog struct{}

//错误:func meal(c cat|dog) { fmt.Println("猫|狗~") }

例子代码:

2.接口细节

接口中只可以定义方法

type 接口名 interface{

方法名1(参数1,参数2...)(返回值1,返回值2...)

方法名2(参数1,参数2...)(返回值1,返回值2...)

}

变量,参数,返回值可以设置为接口类型

Go 中没有关键字显式声明某个类型实现了某个接口。只要一个类型实现了接口要求的所有方法,该类型就自动被认为实现了该接口。

空接口定义为 interface{},可以表示任何类型。

一个未初始化的接口变量其值为 nil,且不包含任何动态类型或值。

了解

在Go的内部,一个接口通常由两个字段组成:

  1. 类型信息(Type):这是一个指向类型描述符的指针,包含了接口的具体类型信息。

  2. 数据(Value):这是一个指向实际数据的指针,这个数据是实现接口的对象的实际数据。

3.结构体,和结构体指针实现接口的区别

我们修改例子代码,让狗的指针实现接口方法

此时,狗的结构体不能当做接口。提示(变量狗的类型,没有实现eat方法,方法eating是一个指针的接受者)

对于猫的结构体实现接口,编译器在接收到指针时候,给我们做了优化,在实际调用时候,给我们加上了指向。

总结

package mainimport "fmt"type eat interface {change()
}
type cat struct {id   intname string
}func (c cat) change() {c.name = "修改"fmt.Println("我是方法中的猫", c)
}func runMyf(e eat) {e.change()
}
func main() {var c = &cat{1, "小花",}runMyf(c) //传递的是指针,实际接收是结构体,// 此时编译器相当于给我们调用了runMyf(*c)fmt.Println(c)//打印结果:我是方法中的猫 {1 修改}//&{1 小花}
}

接口可以嵌套

type eat interface {eating()}type speek interface {speaking()}type animal interface {eat // eat接口嵌入到animal接口speek // speek接口嵌入到animal接口}type cat struct{}func (c cat) eating() {fmt.Println("猫吃鱼")}func (c cat) speaking() {fmt.Println("猫喵喵叫")}func desc(a animal) {a.eating()a.speaking()}func main() {var m catdesc(m)}

接口断言

接口类型的变量.(要判断的实际类型)

在swich中,接口类型要判断的实际类型可以接收type。用于判断接口是哪种实际类型

接口与多态

Go 语言通过接口实现多态,允许不同的结构体实现相同的接口方法

package main
import "fmt"
// 定义一个接口
type Speaker interface {Speak()
}
// Animal结构体实现Speaker接口
type Animal struct {Name string
}
func (a Animal) Speak() {fmt.Println(a.Name, "makes a sound.")
}
// Dog结构体实现Speaker接口
type Dog struct {AnimalBreed string
}
func (d Dog) Speak() {fmt.Println(d.Name, "barks.")
}
// Cat结构体实现Speaker接口
type Cat struct {Name string
}
func (c Cat) Speak() {fmt.Println(c.Name, "meows.")
}
func main() {var s Speakera := Animal{Name: "Generic Animal"}d := Dog{Animal: Animal{Name: "Buddy"}, Breed: "Golden Retriever"}c := Cat{Name: "Whiskers"}s = as.Speak() // 输出: Generic Animal makes a sound.s = ds.Speak() // 输出: Buddy barks.s = cs.Speak() // 输出: Whiskers meows.
}

在这个示例中,AnimalDogCat 都实现了 Speaker 接口的 Speak 方法。通过接口类型 Speaker,可以存储任何实现了该接口的结构体,实现多态行为。

http://www.dtcms.com/wzjs/123453.html

相关文章:

  • 如何用群晖nas做网站竞价排名的定义
  • 玩具外贸网站模板关键词爱站网关键词挖掘工具
  • 哪些网站可以做外链百度网站怎么申请注册
  • 大连响应式网站制作电商大数据查询平台免费
  • 阿雷网站建设公司网上营销怎么做
  • 建设信用卡积分兑换网站公众号软文推广多少钱一篇
  • 整站seo优化哪家好aso关键词排名优化是什么
  • 网站数据库备份怎么做销售新人怎么找客户
  • 黑龙江高端网站建设网站站长
  • 品牌型网站成功案例图片营销案例分析
  • 网站域名变更后怎样操作百度应用市场官网
  • 可以做投票功能的网站成都最新数据消息
  • 黄埔网站建设 信科网络自动推广工具
  • 银行门户网站是什么意思网络营销方式有几种
  • 上海网站 备案seo 优化技术难度大吗
  • 如何做班级网站线上推广员是做什么的
  • 电子商务网站建设复习题seo快速入门教程
  • 在线咨询网站开发价格登封搜索引擎优化
  • 工程找队伍信息网广州seo推广优化
  • 像宝塔面板一样的建站工具营销型网站重要特点是
  • 广州企业网站模板建站网站免费网站免费
  • dnf做汉堡怎么玩间网站苏州seo关键词优化排名
  • seo怎么才能做好黑锋网seo
  • 怎么做祝福网站怎么自己创建网页
  • 网站建设类型珠海百度搜索排名优化
  • 南充商城网站建设网站建设解决方案
  • 连锁加盟网站制作千锋教育的官网
  • 企业网络营销的模式有哪些seo知识培训
  • wordpress 后台更改密码网站关键词排名优化方法
  • 网站建设和网络优化昆明网络推广方式有哪些