在进行时,了解您已传递的基础类型有时会很有用。这可以通过类型开关来完成。假设我们有两个结构:
type Rembrandt struct{} func (r Rembrandt) Paint() {} type Picasso struct{} func (r Picasso) Paint() {}
实现Painter接口:
type Painter interface { Paint() }
然后,我们可以使用此开关来确定基础类型:
func WhichPainter(painter Painter) { switch painter.(type) { case Rembrandt: fmt.Println("The underlying type is Rembrandt") case Picasso: fmt.Println("The underlying type is Picasso") default: fmt.Println("Unknown type") } }