从接口确定底层类型
在 go 中,有时知道你已经传递了哪种基础类型。这可以通过类型开关完成。这假设我们有两个结构:
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")
}
}