所谓空接口就是没有方法集,以至于任何类型都可实现它,换言之,也就是空接口可以保存任意类型的值。
所谓空接口就是没有方法集,以至于任何类型都可实现它,换言之,也就是空接口可以保存任意类型的值。
package main
import (
"fmt"
)
func main() {
var any interface{}
any = 4
fmt.Printf("any 值为 %d ,类型为 %T \n", any, any)
any = "https://qiucode.cn"
fmt.Printf("any 值为 %d ,类型为 %T \n", any, any)
}
接口与类型之间转换
package main
import (
"fmt"
)
type Flyer interface {
Fly()
}
type Walker interface {
Walk()
}
type Bird struct{}
func (b *Bird) Fly() {
fmt.Println("fling....")
}
func (b *Bird) Walk() {
fmt.Println("Walking ....")
}
type Peple struct{}
func (p *Peple) Walk() {
fmt.Println(" peple walk ...")
}
func main() {
animals := map[string]interface{}{
"bird": new(Bird),
"peple": new(Peple),
}
// 遍历映射
for name, obj := range animals {
f, isFlyer := obj.(Flyer)
w, isWalker := obj.(Walker)
fmt.Printf("name: %s isFlyer: %v isWalker: %v\n", name, isFlyer, isWalker)
if isFlyer {
f.Fly()
}
if isWalker {
w.Walk()
}
}
}