golang any 之中的类型及 interface 接口
在 Go 语言中,interface
是一种类型,它是一组方法的集合,任何类型的值,只要它实现了这个接口集合中的所有方法,那么它就可以说是实现了这个接口。
interface
是 Go 语言中引用类型的一种重要体现,它在很大程度上简化了 Go 语言的类型系统。
Go 语言的 interface
是一种新的类型,它将具体的类型实现的细节抽象出来,只关心对象能否进行某种动作,而不关心这个对象的具体类型是什么。
Go 语言的 interface
是一种新的类型,它将具体的类型实现的细节抽象出来,只关心对象能否进行某种动作,而不关心这个对象的具体类型是什么。
以下是一个简单的例子:
package main
import "fmt"
// 定义一个 interface
type Usb interface {
start()
}
// 定义两个结构体
type Phone struct {}
type Camera struct {}
// 为结构体实现 interface 中定义的方法
func (phone Phone) start() {
fmt.Println("Phone is starting")
}
func (camera Camera) start() {
fmt.Println("Camera is starting")
}
func main() {
var usb1 Usb = Phone{}
usb1.start() // Phone is starting
var usb2 Usb = Camera{}
usb2.start() // Camera is starting
}
在这个例子中,我们定义了一个 Usb
接口,然后定义了两个结构体 Phone
和 Camera
,然后分别为这两个结构体实现了 start
方法。在 main
函数中,我们声明了 Usb
类型的变量 usb1
和 usb2
,分别将 Phone
和 Camera
的实例赋值给它们,然后调用 start
方法。
这个例子展示了 interface
的一种常见用法:通过 interface
来定义一组方法,然后让不同的结构体实现这些方法,这样就可以通过 interface
来引用这些结构体的实例,而不需要关心它们具体是哪个类型的实例。
这种抽象机制让 Go 语言在实现多态的时候变得极为灵活和简单,也是 Go 语言设计中的一个重要特点。
评论已关闭