在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