在Golang中,一个类只需要实现了接口要求的所有函数,我们就说这个类实现了该接口。
package main import "fmt" type Animal interface { Fly() Run() } type Animal2 interface { Fly() } type Bird struct { } func (bird Bird) Fly() { fmt.Println("Bird is flying!!!!") } func (bird Bird) Run() { fmt.Println("Bird is running!!!!") } func main() { var animal Animal bird := new(Bird) animal = bird animal = bird //把类实例直接赋值给接口 animal.Fly() animal.Run() }
Bird is flying!!!! Bird is running!!!!
空接口可以接收任何类型的值赋值
package main import "fmt" func main() { var test interface{} test = 123 fmt.Printf("%T,%v ", test, test) test = "abc" fmt.Printf("%T,%v ", test, test) test = true fmt.Printf("%T,%v ", test, test) test = 312.2 fmt.Printf("%T,%v ", test, test) }
int,123 string,abc bool,true float64,312.2