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

2019-07-17  本文已影响0人  卖毛玉的小贩

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

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用一行判断结束。

上一篇 下一篇

猜你喜欢

热点阅读