在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 =
fmt.Printf("%T,%v\n", test, test)
test = "abc"
fmt.Printf("%T,%v\n", test, test)
test = true
fmt.Printf("%T,%v\n", test, test)
test = 312.2
fmt.Printf("%T,%v\n", test, test)
}
int,
string,abc
bool,true
float64,312.2