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!