jjzjj

reflecting

全部标签

reflection - 反射(reflect) : Is it possible to get the underlying typed type information?

我正在从go/ast移植一个程序至reflect.为了通过测试,我不仅需要获取顶级类型信息,还需要获取基础类型(如果基础类型不是内置的)。在下面的例子中,程序是否可能知道main.T的底层类型是main.TT?packagemainimport"fmt"import"reflect"funcmain(){typeTTinttypeTTTx:=T(0)fmt.Println(reflect.TypeOf(x))}输出:main.T 最佳答案 main.T的底层类型是int,而不是main.TT。反射包不知道main.T是用main.T

reflection - 使用 gorm 库进行反射(reflect)

我在golang中使用gorm包(https://github.com/jinzhu/gorm)作为我的数据库库。我有很多类(数据库表),如“酒店”或“套餐”。复制代码不是好的编程习惯。作为一个愚蠢的例子-假设我想从每个表中获取第一个对象。我可以为每个对象编写此方法(GetFirstHotel、GetFirstPackage...)。但更好的方法是只有一个方法GetFirstItem,我会使用第一个参数创建与参数具有相同类的对象,然后将它传递给gorm,gorm将用数据库中的数据填充它,然后将其作为interface{}返回。我尝试为此使用反射,但失败了,因为我可能不太了解它。也许我只

pointers - 无法反射(reflect)不返回指针,编译器在转换时出现 panic ?

围绕这样的东西编写的代码导致了一个问题:funcCreateNewItemOfType(returnTypereflect.Type)(interface{}){returnreflect.New(returnType).Interface();}...如何实际返回returnType的结构而不是指向结构的指针,如reflect在这里创建的那样?编译器可以很好地构建它,但在运行时会出现panic,但不会在此处的return调用前接受星号,以便实际返回结构而不是指针。 最佳答案 reflect.New()创建指定类型的新值,并返回re

pointers - 将 reflect.AppendSlice 的结果分配给指针

我在将这段代码(实际上是在slice上左旋转)翻译成接受interface{}作为输入参数的更通用的版本时遇到了麻烦。funcrotate(a*[]int,iint){x,b:=(*a)[:i],(*a)[i:]*a=append(b,x...)}我在期末作业上遇到了麻烦:funcrotateSlice(ainterface{},iint){v:=reflect.ValueOf(a)x,b:=v.Elem().Slice(0,i),v.Elem().Slice(i,v.Elem().Len())*a=reflect.AppendSlice(b,x)}错误信息是invalidindire

go - 反射 - 方法调用出现 "call of reflect.Value.Elem on struct Value" panic

这是一个代码片段-typeGatewaystruct{Svc1svc1.InterfaceSvc2svc2.Interface}func(g*Gateway)GetClient(servicestring)interface{}{ps:=reflect.ValueOf(g)s:=ps.Elem()f:=s.FieldByName(strings.Title(service))returnf.Interface()}func(g*Gateway)Invoke(servicestring,endpointstring,args...interface{})[]reflect.Value{l

golang递归地反射(reflect)字段类型和值

在golang中,我想通过一个结构递归反射(reflect),得到字段的名称,它的类型和值。这里的代码帮我反射(reflect)了golangrecurisivereflection问题是,当我尝试提取值时,当我在ptr值上反射(reflect)该值时,我总是感到panic。是否可以反射(reflect)这两种类型,并继续传递值直到我到达原语,然后打印字段名称、类型和值?这是我修改的代码:funcprintType(prefixstring,treflect.Type,vreflect.Valuevisitedmap[reflect.Type]bool){//Printthenameo

go - 如何使用 reflect.Type 执行类型断言

这个问题在这里已经有了答案:golangtypeassertionusingreflect.Typeof()(6个答案)关闭6个月前。我知道反射在go中通常不受欢迎,但就我目前的目的而言,我很确定它是最好的解决方案。本质上我的项目是cli工具,它会根据传入的命令输出一个xml查询并返回相应的结果。每个命令请求都有一些样板代码,其中填充默认值并验证提供的值。所以我有一系列基于Command结构的Command对象,如下所示:typeCommandstruct{NamestringRequestinterface{}RequestTypereflect.TypeResponseinterf

golang 反射(reflect)到 []interface{}

我想创建一个迷你框架,它采用一个简单的结构并从中创建一个完整的crud。我已经开始了,“findOne、更新、创建、删除”正在运行。不是我在创建findAll方法时遇到问题。更清楚地说,我不知道如何使用反射将我的ptr寻址到结构数组。这里是findOne函数的一个小例子。typecompanystruct{IdintNamestring}comp.InitModel(newDbConnection(),&comp)在InitModel中,我可以用以下内容填充指向公司的指针://m.caller=pointertotheptrtocomp(struct)callerV:=reflect.

go - type reflect.Value 不支持索引

我有一个通用类型数组interface{},我想检查该数组是否在其JSON对象之一中包含特定值。history:=reflect.ValueOf(historyInterface)fori:=0;i下面是每次迭代的测试结果:firstiterationmap[id:5afbff19bf07c79c19ed9af9date:Saturday,January21,20179:21PMcertitude:33]seconditerationmap[id:afbff198658487a3e3e376bdate:Thursday,March3,20162:24PMcertitude:30]inv

Go:再次将类型为 uuid.UUID (satori) 的 reflect.Value 转换回 uuid.UUID

我试图再次将反射的UUID转换回实际的UUID对象,但找不到方法,当我打印反射值时它看起来是正确的,但在尝试转换时我找不到方法。packagemainimport("fmt""reflect"uuid"github.com/satori/go.uuid")funcmain(){value:=uuid.Must(uuid.NewV4())reflectedValue:=reflect.ValueOf(value)fmt.Println(reflectedValue)result:=reflectedValue.String()fmt.Println(result)}输出:$gorunma