go 反射

作者: wayyyy | 来源:发表于2021-10-23 14:30 被阅读0次

    在面对类型时,我们要区分 Type 和 Kind,前者表示真实类型(静态类型),后者表示其基础结构(底层类型)类别。

    • 特殊的静态类型interface
      interface 类型是一种特殊的类型,它代表了方法集合,它可以存放任何实现了其方法的值。
      比如

      • 特殊的interface{}类型
        最特殊的interface类型为interface{},interface用来表示一组方法集合,所有实现该方法集合的类型都被认为是实现了该接口。那么空interface类型的方法集合为空,也就是说所有类型都可以认为是实现了该接口。所以一个interface{}类型变量可以存放所有值。

      • interface 类型是如何表示的?

        var r io.Reader
        tty, err := os.OpenFile()
        

        r 的类型是什么?r的类型时钟是io.Readerinterface类型,无论其存储什么值,r保存了一个(value, type)对来表示其所存储值的信息:value即为r所持有元素的值,type即为所持有元素的底层类型

        我们可以使用类型断言:w = r.(io.Writer),意思是如果r所持有的元素如果同样实现了io.Writer接口,那么就把值传递给w。

    • 获取类型

    • 获取方法

    • 获取类型字段标签

    相关文章

      网友评论

          本文标题:go 反射

          本文链接:https://www.haomeiwen.com/subject/jglniltx.html