keepalivedkeepalived09-11 22:47

go 判断类是否实现了指定接口

在go 语言编程中,有时候我们想知道某个结构体(即有些人称之为类)是否实现了某个接口类型,那么如何去做呢,根据我查找的资料得知处理如下:

type IFace iterface {

Eat() string

}

type Bird struct {

Eyes string

Color int

}

要判断Bird 是否实现了接口 IFace 直接

var _ IFace =new(Bird) 或者 var _ IFace = (*Bird)(nil)

解析:这个其实就是变量定义,您仔细看,我们平时定义变量时候 是否是 var 变量名 类型 = 赋值,上面中的 _ 其实就是舍去变量不要,因为go 中规定只要定义了的变量都必须要有使用的地方,但是我们的目的是为了判断类型是否实现了接口,不必使用到变量,因此就是用了 _ 符号舍去了。=号就带变了赋值,其实就是具体类型转换成接口类型,假如实现了接口类型,编译就可以通过,没有现实编译就会出错,就是根据这个原理来实现的。新手们是否豁然开朗。至于第二种写法与第一种的区别就是,第二种不需要分配内存就达到目的,而第一种是需要分配内存的。哈哈哈学到了吗?所以说 基本功一定要打好,否则很多东西看是奇怪,其实并没有那么复杂。好啦就这样了

程序之家二维码

000
评论