赞
踩
package main import "fmt" type IParent interface { Sing() } type ISon interface { IParent Play() } type Son struct { } type Parent struct { } func (s *Son) Play() { fmt.Println("play") } func (s *Son) Sing() { fmt.Println("son sing") } func (p *Parent) Sing() { fmt.Println("parent sing") } func main() { var ison ISon var son = &Son{} ison = son var ip IParent var p = &Parent{} ip = p _, ok := ison.(IParent) if ok { fmt.Println("son to parent ok") } _, ok = ip.(ISon) if ok { fmt.Println("parent to son ok") } }
son to parent ok
子类向父类转化成功,父类向子类转化失败。因为子类具备父类的全部特征,但是父类却不一定具备子类的特征。所以可以理解为只能向上强转,不能向下强转。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。