前言
很多语言都有接口的概念,但是go语言的接口可能在我们理解上有一点点小小的差异,但是实际展示效果是差不多的
开始学习
比较简单,直接上代码
// 接口里定义一个方法
type Animal interface{
speak()
}
// 定义了一只狗
type Dog struct{
}
func (dog Dog) call() {
fmt.Println("I am dog")
}
// 定义了一只猫
type Cat struct{
}
func (cat Cat) call() {
fmt.Println("I am cat")
}
// 主方法调用
func main() {
var animal Animal
animal = new(Dog)
animal.call()
animal = new(Cat)
animal.call()
}
看着是不是很像java中用接口去接受实现类创建的对象呢?
第二种就是类型输出
// 定义一个新接口
type Test interface{}
// 类型输出,直接调用当前方法,可以传入任意类型的值,即可将信息输出
func showmpType(q interface{}) {
fmt.Printf("type:%T,value:%v\n", q, q)
}
实际上我感觉第一种方式用的多一些,第二种用的比较少,掌握了第一种类似多态的应该就可以了