在面对类型时,我们要区分 Type 和 Kind,前者表示真实类型(静态类型),后者表示其基础结构(底层类型)类别。
-
特殊的静态类型interface
interface 类型是一种特殊的类型,它代表了方法集合,它可以存放任何实现了其方法的值。
比如-
特殊的
interface{}
类型
最特殊的interface类型为interface{}
,interface用来表示一组方法集合,所有实现该方法集合的类型都被认为是实现了该接口。那么空interface类型的方法集合为空,也就是说所有类型都可以认为是实现了该接口。所以一个interface{}
类型变量可以存放所有值。 -
interface 类型是如何表示的?
var r io.Reader tty, err := os.OpenFile()
r 的类型是什么?r的类型时钟是
io.Reader
interface类型,无论其存储什么值,r保存了一个(value, type)对来表示其所存储值的信息:value即为r所持有元素的值,type即为所持有元素的底层类型我们可以使用类型断言:
w = r.(io.Writer)
,意思是如果r所持有的元素如果同样实现了io.Writer接口,那么就把值传递给w。
-
-
获取类型
-
获取方法
-
获取类型字段标签
网友评论