Go语言Interface使用详解
初识interface
Go语言的面向对象的知识点时,发现它的面向对象能力全靠 interface 撑着,而且它的 interface 还与我们以前知道的 interface 完全不同。故而整个过程不断的思考为什么要如此设计?这样设计给我们带来了什么影响?
interface(接口)是golang最重要的特性之一,实现多态。Interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量。
基本语法
定义一个接口
type Person interface {
// 声明方法
method1(参数列表)返回值列表
method2(参数列表)返回值列表
}
实现一个接口
func (t 自定义类型)method1(参数列表)返回值列表 {
//方法实现
}
func (t 自定义类型)method2(参数列表)返回值列表 {
//方法实现
}
小结:
(1)接口里的所有方法都没有方法体,即接口的方法都是没有实现的方法。接口体现了程序设计的多态和高内聚低耦合的思想。
(2)Go中的接口,不需要显示的实现。只要一个变量,含有接口类型中的所有方法,那么这个变量就实现这个接口。因此,Go中没有implement关键字样。
(3)Go实现接口与方法有关,与接口本身叫什么名字没有特别大的关系。变量需要实现接口所有的方法。
其他注意事项
(1)接口本身不能创建实例,但是可以指向一个实现了该接口的自定义类型的变量(实例)。
package main
import "fmt"
// Person 定义接口
type Person interface {
GetName() string
GetAge() uint32
}
// Student 定义类型
type Student struct {
Name string
Age uint32
}
func (s Student) GetName() string{
return s.Name
}
func (s Student) GetAge() uint32{
return s.Age
}
func main() {
var student Student
student.Age = 12
student.Name = "小明&#