美文网首页
go快速学习_结构体-接口-结构体函数

go快速学习_结构体-接口-结构体函数

作者: 卖毛玉的小贩 | 来源:发表于2019-07-17 22:39 被阅读0次

接口为什么要特意的罗列出来呢?

  • 因为go和传统的面向对象的编程语言不太一样,没有什么类和继承的概念.通过接口来实现面向对象。
  • 而go的类也就是结构体
  • 所以索性就放在一起讲了
  • interface(接口)是golang最重要的特性之一,Interface类型可以定义一组方法,但是这些不需要实现。
    请注意:此处限定是一组方法,既然是方法,就不能是变量。
    而且是一组,表明可以有多个方法。
type i struct {
   n1 int
   n2 int
}
//如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问匿名结构体的方法,从而实现继承
//如果一个struct嵌套了另一个【有名】的结构体,那么这个模式叫做组合
//如果一个struct嵌套了多个匿名结构体,那么这个结构可以直接访问多个匿名结构体的方法,从而实现多重继承
type jian struct {
   i
}
type jia struct {
   i
}

首先创建1个i结构体为父结构体,接着创建两个子结构体。

type j interface {
   j() int
}

接着我们创建一个接口,设置接口方法,这里跟iOS的代理差不多,通常设置出来的必须要创建,否则会报错

func (j *jian) j()int{
   return j.n1 - j.n2
}

func (j *jia) j()int{
    return j.n1 + j.n2
}

然后我们写两个结构体方法,两个方法名是相同的,这样我们就可以借助接口实现多态的概念,根据传入的对象而获取到不同的数据。

func face(face j){
   fmt.Println(face.j())
}

func main(){
   j1 := jia{i{10,31}}
   j2 := jian{i{81,26}}
   face(&j1)
   face(&j2)

}

最后补充一点
接口的本质也是指针类型。
而空接口则就是object-c的 NSAny,swift里的Any了
可以的任意类型,但需要断言判断一下
断言的方式为.(类型) 返回值和ok两个参数,可以在if用一行判断结束。

相关文章

  • go快速学习_结构体-接口-结构体函数

    接口为什么要特意的罗列出来呢? 因为go和传统的面向对象的编程语言不太一样,没有什么类和继承的概念.通过接口来实现...

  • go - 学习笔记

    基础 函数 指针 结构体 接口 错误 协程 通道 基础 函数 指针 结构体 接口 错误 协程 通道

  • 结构体

    结构体初识 结构体指针 结构体的匿名字段 结构体嵌套 Go语言中的OOP

  • 第04天(面对对象编程)_02

    05_结构体指针类型匿名字段.go 06_面向过程和对象函数的区别.go 07_为结构体类型添加方法.go 08_...

  • Swift 2 学习笔记 11.结构体

    课程来自慕课网liuyubobobo老师 结构体 结构体基础 结构体之构造函数 结构体之可失败的构造函数 在结构体...

  • 6.结构体相关

    一 C 结构体和结构体指针 eg1: 一 结构体里面定义函数 通过结构体指针访问结构体里面定义的函数。 eg2:

  • go结构体(struct)和方法(method)

    结构体(struct) go中没有对象这一概念,所以采用了结构体的概念,结构体在go中有着非常重要的位置。结构体是...

  • 《Go语言四十二章经》第十八章 Struct 结构体

    《Go语言四十二章经》第十八章 Struct 结构体 作者:李骁 18.1结构体(struct) Go 通过结构体...

  • go语言中的继承和实现

    go语言没有类,只有结构体。以及还有接口,如何利用结构体和接口来实现类似与java的继承和实现呢?我试着整理一下。...

  • 第03天(复合类型)_结构体的基本使用

    29_结构体普通变量初始化 30_结构体指针变量初始化.go 31_结构体成员的使用:普通变量.go 32_结构体...

网友评论

      本文标题:go快速学习_结构体-接口-结构体函数

      本文链接:https://www.haomeiwen.com/subject/lnkhlctx.html