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")
    }
}