GO教程
GO控制语句
GO高级

Go 接口

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}

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4