go语言接口图 golang 接口实现( 三 )


1、reflect.TypeOf(变量名),获取变量的类型,返回reflect.Type类型 。
2、reflect.ValueOf(变量名),获取变量的值,返回reflect.Value类型reflect.Value是一个结构体类型 。
3、变量、interface{}和reflect.Value是可以互相转换的,这点在实际开发中,会经常使用到 。
1、reflect.Value.Kind , 获取变量的 类别(Kind),返回的是一个 常量。在go语言文档中:
示例如下所示:
【go语言接口图 golang 接口实现】 输出如下:
Kind的范畴要比Type大 。比如有Student和Consumer两个结构体,他们的 Type 分别是 Student 和 Consumer,但是它们的 Kind 都是 struct。
2、Type是类型,Kind是类别,Type和Kind可能是相同的,也可能是不同的 。
3、通过反射可以在让 变量 在 interface{} 和 Reflect.Value 之间相互转换,这点在前面画过示意图 。
4、使用反射的方式来获取变量的值(并返回对应的类型) , 要求数据类型匹配,比如x是int,那么久应该使用reflect.Value(x).Int(),而不能使用其它的,否则报panic 。
如果是x是float类型的话,也是要用reflect.Value(x).Float() 。但是如果是struct类型的话,由于type并不确定,所以没有相应的方法,只能 断言 。
5、通过反射的来修改变量,注意当使用SetXxx方法来设置需要通过对应的指针类型来完成,这样才能改变传入的变量的值,同时需要使用到reflect.Value.Elem()方法 。
输出num=20 , 即成功使用反射来修改传进来变量的值 。
6、reflect.Value.Elem()应该如何理解?
Golang入门到项目实战 | golang接口接口像是一个公司里面的领导go语言接口图,go语言接口图他会定义一些通用规范,只设计规范 , 而不实现规范 。
go语言的接口,是一种新的类型定义,它把所有的具有共性的方法定义在一起,任何其go语言接口图他类型只要实现了这些方法就是实现了这个接口 。
语法格式和方法非常类似 。
在接口定义中定义,若干个空方法 。这些方法都具有通用性 。
下面我定义一个USB接口,有读read和写write两个方法 , 再定义一个电脑Computer和一个手机Mobile来实现这个接口 。
USB接口
Computer结构体
Mobile结构体
Computer实现USB接口方法
Mobile实现USB接口方法
测试
运行结果
下面我们定义一个OpenClose接口,里面有两个方法open和close,定义个Door结构体,实现其中一个方法 。
go语言接口图的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于golang 接口实现、go语言接口图的信息别忘了在本站进行查找喔 。

推荐阅读