Go 接口基础教程文档
收录于 2023-04-20 00:10:05 · بالعربية · English · Español · हिंदीName · 日本語 · Русский язык · 中文繁體
Go 接口
Go 有不同的方法来实现面向对象的概念。 Go 没有类和继承。去通过其强大的接口来满足这些要求。
接口为对象提供行为: 如果有什么可以做到这一点,那么它可以在这里使用。
一个接口定义了一组抽象方法,不包含任何变量。
语法:
type Namer interface {
Method1(param_list) return_type
Method2(param_list) return_type
...
}
其中Namer为接口类型。
一般来说,接口的名称由方法名加上[e]r后缀构成,如Printer、Reader、Writer、Logger、Converter等
一个类型不必明确声明它实现了一个接口: 接口是隐式满足的。多种类型可以实现相同的接口。
实现接口的类型还可以具有其他功能。
一个类型可以实现多个接口。
接口类型可以包含对实现该接口的任何类型的实例的引用
Go 接口示例
package main import ( "fmt" ) type vehicle interface { accelerate() } func foo(v vehicle) { fmt.Println(v) } type car struct { model string color string } func (c car) accelerate() { fmt.Println("Accelrating?") } type toyota struct { model string color string speed int } func (t toyota) accelerate(){ fmt.Println("I am toyota, I accelerate fast?") } func main() { c1 := car{"suzuki","blue"} t1:= toyota{"Toyota","Red", 100} c1.accelerate() t1.accelerate() foo(c1) foo(t1) }
输出:
Accelrating... I am toyota, I accelerate fast... {suzuki blue} {Toyota Red 100}