接口

125 阅读1分钟
  • 接口类型(接口是一个规范,一堆方法的集合 er结尾) 接口类型 只关心类型可以做什么,而不是储存什么值。任何类型的任何值,只要满足接口的要求,那他就是接口变量。

比如下面代码,a满足了接口,所以可以调用方法

type Animal interface{
    Eat()
    Run()
}

type Cat struct{
    Name string
    Sex string
}
type Dog struct{
    Name string
}
func (c Cat)Run{
    fmt.pringln()
}
func (d Dog)Run{
    fmt.pringln()
}
func (c Cat)Eat{
    fmt.pringln()
}
func (d Dog)Eat{
    fmt.pringln()
}

func main{
    var a Animal //声明一个变量 是一个接口
    c:= Cat{
        Name :"Tom",
        Sex:false,
    }
    
    //a可以调用方法,但是没有c的内容
    a = c
    a.Eat()
    a.Run()
}

func main{
    var a Animal //声明一个变量 是一个接口
    a= Cat{
        Name :"Tom",
        Sex:false,
    }
   
    a.Eat()
    a.Run()
}

定义类型,go会判断此类型是不是满足接口,满足的话就可以调用接口里的方法

怎么用

func MyFunc(a interface{}){
    fmt.Println(a)
}
func MyFunc(a Animal){
    a.Eat()
    a.Run()
}