草庐IT

FieldByName

全部标签

go - 当值是 reflect.Ptr 时如何使用 reflect.FieldByName

我有一个project函数,它返回一个slice,其中包含输入slice中每个结构或映射的名称的字段值。我遇到输入slice包含指向结构的指针的情况。我已经设置了一个递归函数来对值进行操作,但需要知道如何将类型reflect.Ptr转换为底层reflect.Struct。这是怎么做到的?任何其他设计建议表示赞赏。我对Go还是有点陌生​​。代码如下:funcproject(in[]interface{},propertystring)[]interface{}{varresult[]interface{}varappendValuefunc(list[]interface{},elint

json - for 循环上的 goroutine channel

我的main函数从文件中读取json,将其解码为结构,将其转换为另一种结构类型,然后通过stdout输出格式化的JSON。我正在尝试实现goroutines和channel来为我的for循环添加并发。funcmain(){muvMap:=map[string]string{"male":"M","female":"F"}fileA,err:=os.Open("serviceAfileultimate.json")iferr!=nil{panic(err)}deferfileA.Close()data:=make([]byte,10000)count,err:=fileA.Read(da

go - 使用反射,如何将值设置为结构字段(指针)

我尝试通过反射将值设置为结构字段(指针字段),但失败了。我得到一个结构字段的名称,所以使用FieldByName来获取该字段该字段是一个指针。我尝试使用FieldByName().SetFieldByName().SetPointer来设置值。typetstruct{b*int}funcmain(){t:=new(ts)a:=new(int)ss:=reflect.ValueOf(t).FieldByName("b").Set(a)}typetstruct{b*int}funcmain(){t:=new(ts)a:=new(int)ss:=reflect.ValueOf(t).Fiel

go - 使用反射,如何将值设置为结构字段(指针)

我尝试通过反射将值设置为结构字段(指针字段),但失败了。我得到一个结构字段的名称,所以使用FieldByName来获取该字段该字段是一个指针。我尝试使用FieldByName().SetFieldByName().SetPointer来设置值。typetstruct{b*int}funcmain(){t:=new(ts)a:=new(int)ss:=reflect.ValueOf(t).FieldByName("b").Set(a)}typetstruct{b*int}funcmain(){t:=new(ts)a:=new(int)ss:=reflect.ValueOf(t).Fiel

go - 在 golang 反射 FieldByName 中忽略大小写

我正在尝试使用golang中的反射从一个结构中读取,我能够成功地做到这一点,但我想知道我该怎么做才能忽略字段名称的大小写。我有下面的代码typeAppstruct{AppIDstringOwnerstringDisplayNamestring}funcExtract(app*App){appData:=reflect.ValueOf(app)appid:=reflect.Indirect(appData).FieldByName("appid")fmt.Println(appid.String())owner:=reflect.Indirect(appData).FieldByName

go - 在 golang 反射 FieldByName 中忽略大小写

我正在尝试使用golang中的反射从一个结构中读取,我能够成功地做到这一点,但我想知道我该怎么做才能忽略字段名称的大小写。我有下面的代码typeAppstruct{AppIDstringOwnerstringDisplayNamestring}funcExtract(app*App){appData:=reflect.ValueOf(app)appid:=reflect.Indirect(appData).FieldByName("appid")fmt.Println(appid.String())owner:=reflect.Indirect(appData).FieldByName

go - 如何确定 `value.FieldByName(name)` 是否找到该字段?

在下面的示例中,当未找到field时,我正在尝试找出如何停止执行我的程序。如果FieldByName(key)返回零值,我该如何警告用户未找到该字段?field:=mutable.FieldByName(key)//needtofigureoutifthefieldexistsbeforecalling.Type()onitiffield.X==Y{log.Fatalf("Unabletofind[%s]inConfigobject",key)}switchfield.Type().Name(){} 最佳答案 正如您已经提到的,th

go - 如何确定 `value.FieldByName(name)` 是否找到该字段?

在下面的示例中,当未找到field时,我正在尝试找出如何停止执行我的程序。如果FieldByName(key)返回零值,我该如何警告用户未找到该字段?field:=mutable.FieldByName(key)//needtofigureoutifthefieldexistsbeforecalling.Type()onitiffield.X==Y{log.Fatalf("Unabletofind[%s]inConfigobject",key)}switchfield.Type().Name(){} 最佳答案 正如您已经提到的,th

go - 在 Go 中获取子结构字段

我正在尝试使用反射从struct值中获取字段。packagemainimport("fmt""reflect")typeVertexstruct{XstringYstringSubVertexSubVertex}typeSubVertexstruct{Zstring}funcget_field(vVertex,fieldstring)string{r:=reflect.ValueOf(v)f:=reflect.Indirect(r).FieldByName(field)returnf.String()}funcmain(){v:=Vertex{"a","b",SubVertex{"c"

go - 在 Go 中获取子结构字段

我正在尝试使用反射从struct值中获取字段。packagemainimport("fmt""reflect")typeVertexstruct{XstringYstringSubVertexSubVertex}typeSubVertexstruct{Zstring}funcget_field(vVertex,fieldstring)string{r:=reflect.ValueOf(v)f:=reflect.Indirect(r).FieldByName(field)returnf.String()}funcmain(){v:=Vertex{"a","b",SubVertex{"c"
12