在Go程序中,有时候需要知道传过来的参数其底层的类型是什么,这可以通过一个类型开关器来完成。假设我们有两个结构体:
type Rembrandt struct{} func (r Rembrandt) Paint() {} type Picasso struct{} func (r Picasso) Paint() {}
它们都实现了如下 Painter 接口:
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") } }
最后更新于4年前