• 免费注册  马上登录
  • 切换到窄版
  • go语言|go语言部落|go文库

    查看: 273|回复: 0

    go语言反射TypeOf取类型

    [复制链接]

    16

    主题

    17

    帖子

    74

    积分

    网站编辑

    Rank: 8Rank: 8

    积分
    74
    发表于 2019-12-18 22:27:58 | 显示全部楼层 |阅读模式
    本帖最后由 go酋长 于 2019-12-18 22:29 编辑

    package main

    import (
       "fmt"
       "reflect"
    )

    //反射:reflect
    //TypeOf
    //Go言中,使用reflect.TypeOf()可以得任意象(reflect.Type),
    // 程序通过类象可以访问任意型信息
    func reflectType(x interface{}){
       v :=reflect.TypeOf(x)
       fmt.Printf("type:%v 类型:%v 种类:%v\n",v,v.Name(),v.Kind())
    }

    func main(){
       var a float32
       reflectType(a)//tepe:float34
    var b *int64
       var c int64
       var d rune
       reflectType(b)
       reflectType(c)
       reflectType(d)//拿到的是底int32,而不是rune
    fmt.Println("*******************************************")
       type person struct {
          name string
          age  int
       }
       type book struct{
          title string }
       var e = person{
          name: "golanguage.net",
          age:  18,
       }
       var f = book{
          title: "Go语言部落》"}
       var g []byte
       var h map[string]int
       reflectType(e)// type:main.person :person 种类struct
    reflectType(f) // type:main.book :book 种类struct
       //Go言的反射中像数组、切片、Map、指型的量,它们.Name()都是返回空
    reflectType(g)//type:[]uint8 :  种类slice
    reflectType(h)//tepe:map[string]int 型    种类map
    }

    打印结果:

    type:float32 类型:float32 种类:float32

    type:*int64 类型: 种类:ptr

    type:int64 类型:int64 种类:int64

    type:int32 类型:int32 种类:int32

    *******************************************

    type:main.person 类型:person 种类:struct

    type:main.book 类型:book 种类:struct

    type:[]uint8 类型: 种类:slicetype:map[string]int 类型: 种类:map


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Go语言社区

    GMT+8, 2020-9-19 08:20 , Processed in 0.038884 second(s), 17 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表