Golang 接口详解:提升代码效率与可维护性

发表时间: 2024-06-06 11:39

接口是啥?

它是一种契约,一种承诺,保证了类型将会遵循某些规则。

干啥用?

你写出更灵活的代码,让你可以用统一的方式对待各种不同类型的数据。


接口的定义

比如你可以定义一个动物接口,规定了所有动物都必须会叫和会跑。

type Animal interface {		Sound() string		Run() string}

实现接口:

任何类型只要实现了接口中规定的所有方法,就自动成为了这个接口的一员。

type Dog struct {}func (d Dog) Sound() string {return "Woof!"}func (d Dog) Run() string {return "Running like a champ!"}

如果们还有一只猫,该怎么实现上面所有的动物接口呢?

type Cat struct{}func (c Cat) Sound() string {	return "meow!"}func (c Cat) Run() string {	return "Running like a graceful shadow!"}

使用接口

接口让你可以对待不同类型的数据,就像是同一类型一样。

func LetAnimalDoSomething(a Animal) {	fmt.Println(a.Sound())	fmt.Println(a.Run())}func main() {	var myDog Dog	var mycat Cat	LetAnimalDoSomething(myDog)	LetAnimalDoSomething(mycat)}

运行上面的代码,结构为:

Woof!Running like a champ!meow!Running like a graceful shadow!