一篇文章彻底搞懂 go 反射使用

一篇文章彻底搞懂 go 反射使用,第1张

常用方法 reflect.Type 和 reflect.Value

interface{}类型变量其具体类型可以使用reflect.Tpye来表示,而其具体值则使用reflect.Value来表示。而reflect.Type和reflect.Value分别提供reflect.TypeOf()和reflect.ValueOf()来获取interface{}的具体类型及具体值。接下来我们结合例子来进行说明

package main

import(
  "fmt"
  "reflect"
)

type order struct{
  ordId int
  customerId int
}

func query(q interface{}) {
  t := reflect.TypeOf(q)
  v := reflect.ValueOf(q)
  fmt.Println("Type ", t)
  fmt.Println("Value ", v)
}

func main(){
  o := order{
    ordId: 456,
    customerId: 56,
  }
 query(o)
}

输出

Type  main.order
Value  {456 56}

可以通过下面几种方法从反射值对象 reflect.Value 中获取原值,如下表所示。

<
方法名 说 明
Interface() interface {} 将值以 interface{} 类型返回,可以通过类型断言转换为指定类型
Int() int64

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/923696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存