草庐IT

反射面

全部标签

go - 使用反射设置字段

几天来,我一直在努力处理一些Go语言代码。我有一个golang函数,可以在结构中设置所有公共(public)字段,如createdBy、updatedBy等。我在谷歌上搜索了很多,并得出了以下代码。packagemainimport("fmt""reflect""time""strings")typeUserstruct{UserIdstring`json:"userId"`ObjectTypestring`json:"objectType"`CreationDatestring`json:"creationDate"`UpdationDatestring`json:"updation

go - 在 Go 中使用反射设置嵌套结构字段的值

我正在尝试创建一个protobuf结构typeFlatMessagemap[string][]byte我正在努力设置嵌套字段的值。我有一个func(fm*FlatMessage)Unflatten()(pb.Message,error)将平面消息转换为结构化protobuf的方法。我还有一个名为analyze的辅助函数它采用pb.Message类型的结构并返回map[int]*ProtoField其中:typeProtoFieldstruct{NamestringTypereflect.Type}即analyze遍历pb.Message递归地收集我需要的所有信息。到目前为止,一切都很好

go - 在 Go 中使用反射设置嵌套结构字段的值

我正在尝试创建一个protobuf结构typeFlatMessagemap[string][]byte我正在努力设置嵌套字段的值。我有一个func(fm*FlatMessage)Unflatten()(pb.Message,error)将平面消息转换为结构化protobuf的方法。我还有一个名为analyze的辅助函数它采用pb.Message类型的结构并返回map[int]*ProtoField其中:typeProtoFieldstruct{NamestringTypereflect.Type}即analyze遍历pb.Message递归地收集我需要的所有信息。到目前为止,一切都很好

reflection - 在golang中,反射(reflect)pkg,8g错误 "undefined: reflect.NewValue"

与reflectpkg有点混淆所有示例都使用reflect.NewValue()来获取var的reflect.Value,但是funcNewValue未记录在http://golang.org/pkg/reflect/中8g编译器返回“undefined:reflect.NewValue”是否仍支持NewValue()?如果不是,如何从var中获取reflect.Value?Typeof和NewValue函数已重命名为TypeOf和ValueOf。 最佳答案 围棋reflectpackage对weekly.2011-04-13进行了

reflection - 在golang中,反射(reflect)pkg,8g错误 "undefined: reflect.NewValue"

与reflectpkg有点混淆所有示例都使用reflect.NewValue()来获取var的reflect.Value,但是funcNewValue未记录在http://golang.org/pkg/reflect/中8g编译器返回“undefined:reflect.NewValue”是否仍支持NewValue()?如果不是,如何从var中获取reflect.Value?Typeof和NewValue函数已重命名为TypeOf和ValueOf。 最佳答案 围棋reflectpackage对weekly.2011-04-13进行了

testing - 在 Go 中使用反射检查兼容类型

虽然我知道在Go中panic可能不是惯用的,但我想测试以确保函数在特定条件下而不是在其他条件下panic。函数示例。funcPanicOnErr(potentialErrerror){ifpotentialErr!=nil{panic(potentialErr)}}下面是一个检查函数是否会panic的实现。funcInvocationCausedPanic(finterface{},params...interface{})bool{//Obtainthefunction'ssignature.reflectedFunc:=reflect.ValueOf(f)funcType:=ref

testing - 在 Go 中使用反射检查兼容类型

虽然我知道在Go中panic可能不是惯用的,但我想测试以确保函数在特定条件下而不是在其他条件下panic。函数示例。funcPanicOnErr(potentialErrerror){ifpotentialErr!=nil{panic(potentialErr)}}下面是一个检查函数是否会panic的实现。funcInvocationCausedPanic(finterface{},params...interface{})bool{//Obtainthefunction'ssignature.reflectedFunc:=reflect.ValueOf(f)funcType:=ref

dictionary - Go中通过反射为struct成员赋值

我有一个包含成员A、B、C字符串的结构体v。使用反射,我可以获得字段的名称及其值:typ:=v.Type()fori:=0;i既然我有了名字,并且可以得到值OUT,我可以给字段赋新值吗?我基本上想做的是:v.Field(fieldname).Interface()="newvalue"但这显然行不通。如果您只知道字段的名称,是否可以将值分配给结构?在实践中,我试图将map[string]string中的值分配给结构中的相应字段,其中结构和映射定义可能会随着时间的推移而扩展变化,而映射可能包含比结构更多或更少的值。我考虑过使用JSON来实现它,但这种方法让我有点感冒,因为使用反射“几乎”

dictionary - Go中通过反射为struct成员赋值

我有一个包含成员A、B、C字符串的结构体v。使用反射,我可以获得字段的名称及其值:typ:=v.Type()fori:=0;i既然我有了名字,并且可以得到值OUT,我可以给字段赋新值吗?我基本上想做的是:v.Field(fieldname).Interface()="newvalue"但这显然行不通。如果您只知道字段的名称,是否可以将值分配给结构?在实践中,我试图将map[string]string中的值分配给结构中的相应字段,其中结构和映射定义可能会随着时间的推移而扩展变化,而映射可能包含比结构更多或更少的值。我考虑过使用JSON来实现它,但这种方法让我有点感冒,因为使用反射“几乎”

reflection - 获得反射。结构类型

在Go中是否可以从结构本身检索reflect.Type?伪:typeMyStructstruct{Namestring}type:=reflect.TypeOf(MyStruct)然后是否可以制作这种类型的slice?更新:我知道reflect.TypeOf((*t1)(nil)).Elem()这个问题的解决方案。我正在寻找更好的解决方案,因为这在我看来非常不友好。我将尝试解释情况。在数据库模型之上开发“通用”数据服务时,我想做类似的事情:ds:=NewDataService(db.Collection("MyStruct"),MyStruct)DataService能够使用该模型执行