- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个类似这个演示的数据结构。
type Family struct {
first string
last string
}
type Person struct {
name string
family *Family
}
func main(){
per1 := Person{name:"niki",family:&Familys{first:"yam",last:"bari"}}
Check(per1)
}
和代码:
var validate *validator.Validate
func Check(data interface{}) {
var v = reflect.ValueOf(data)
if v.Kind() == reflect.Struct {
fmt.Println("was a struct")
v = v.FieldByName("family").FieldByName("last")
fmt.Println(v)
}
}
当我不为 Family 使用 point 时,它返回“bari”并且没问题。但是使用 point 时,出现此错误。
reflect: call of reflect.Value.FieldByName on ptr Value
我搜索了很多,但找不到有帮助的答案。
最佳答案
正如您所注意到的,family
是 *Family
。正如错误所说,您不能在 reflect.Value
上调用 .FieldByName(...)
,其中该值是一个指针。
相反,您需要间接指向指针,以获取它指向的值,然后调用 .FieldByName(...)
。
familyPtr := v.FieldByName("family")
v = reflect.Indirect(familyPtr).FieldByName("last")
请参阅有关间接的文档:https://golang.org/pkg/reflect/#Indirect
关于go - 在 ptr 值上反射(reflect) : call of reflect. Value.FieldByName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50098624/
我读过一篇博客文章(目前我找不到链接),其中作者说分配局部变量比使用 ADOQuery.FieldByName('...').asString 或更快TSQLQuery.FieldByName('..
我碰巧有一个非常有趣的查询和问题。我们正在运行 Oracle 12c(大约一年前从 11g 迁移),最近刚刚从 jOOq 3.4.x 迁移到 3.7.3,我不想使用现在已弃用的 DSL.fieldBy
我正在使用Delphi XE2。我的代码从 SQL-Server 2008 R2 数据库中提取数据。返回的数据是一个包含 1,055,227 字节数据的 nvarchar(max) 字段。我使用以下代
我说的是 Delphi + ADO + MSSQL。 好的,我知道带有参数的查询对于 SQL 注入(inject)是非常安全的。 另一方面,动态查询是相当不安全的。 但是经典的 FieldByName
在我维护的一些代码中,我看到 TClientDataSet.OnCalcFields 事件处理程序中使用了两种不同的方法: with DataSet do begin // 1. Call
我正在尝试使用 golang 中的反射从一个结构中读取,我能够成功地做到这一点,但我想知道我该怎么做才能忽略字段名称的大小写。 我有下面的代码 type App struct{ AppID
我将数据传递给具有输入类型接口(interface)的函数。 这段代码: main(){ SampleData := Input{ Recipients: []string{"abc"
在下面的示例中,当未找到 field 时,我正在尝试找出如何停止执行我的程序。 如果 FieldByName(key) 返回零值,我该如何警告用户未找到该字段? field := mutable.Fi
调用反射值的 .FieldByName 方法时出现以下错误,确切的错误是:- panic: reflect: call of reflect.Value.FieldByName on ptr Valu
val 有什么值(value)? ,为字符串类型,当列名fieldName时获取是 null对于选定的行?这里myQry是一个数据库查询。 val := myQry.FieldByName('fiel
我有一个 project 函数,它返回一个 slice ,其中包含输入 slice 中每个结构或映射的名称的字段值。我遇到输入 slice 包含指向结构的指针的情况。我已经设置了一个递归函数来对值进行
我有一个类似这个演示的数据结构。 type Family struct { first string last string } type Person struct { name
我有一个类型为 interface{} 的变量,我想使用反射更改字段的值。我该怎么做?由于其他要求,变量必须是 interface{} 类型。如果变量不是 interface{} 类型,则一切正常,否
我是一名优秀的程序员,十分优秀!