如果接口类型的变量是实现它的特定结构类型,如何签入 Go?



假设我有以下内容:

type A Interface{
....
}
//Implements A
type B struct{
....
}
//Imlements A
type C struct{
....
}

现在我有一个函数,它接受A类型的变量作为参数:

func Foo(obj A){
if A is B{
....
}else if A is C{
....
}
}

还有一个main函数:

func main(){
b := B{}
Foo(b)
}

如何检查传递给函数的参数是否实际上是类型B

使用类型开关,如@CeriseLimón链接的游览页面所述。

func Foo(v A) {
switch v := v.(type) {
case B:
// It's a B
case C:
// It's a C
}
}

在操场上看到它的实际效果。

最新更新