草庐IT

反射率

全部标签

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

reflection - 反射(reflect) Empty slice 底层类型的字段?

我有以下查询构建器函数:funcCreateQuery(tinterface{},wherestring){varbbytes.Bufferb.WriteString("SELECT")s:=reflect.ValueOf(t).Elem()typeOfT:=s.Type()fori:=0;i按如下方式调用时工作正常:vardstFooStructCreateQuery(&dst,"")但是以下引发了“在slice值上调用reflect.Value.NumField”panic:vardst[]FooStructCreateQuery(&dst,"")我怎样才能使函数打印slice底层

reflection - 反射(reflect) Empty slice 底层类型的字段?

我有以下查询构建器函数:funcCreateQuery(tinterface{},wherestring){varbbytes.Bufferb.WriteString("SELECT")s:=reflect.ValueOf(t).Elem()typeOfT:=s.Type()fori:=0;i按如下方式调用时工作正常:vardstFooStructCreateQuery(&dst,"")但是以下引发了“在slice值上调用reflect.Value.NumField”panic:vardst[]FooStructCreateQuery(&dst,"")我怎样才能使函数打印slice底层

reflection - 如何使用反射将数组值设置为 golang 中的字段?

我有一个包含以下字段的结构typeConfigstruct{Address[]stringNamestring}我正在从JSON格式的文件中读取此配置的值{"Address":["xx.xx.xx.xx","xx.xx.xx.xx"],"Name":"Name"}我已经使用Reflect来识别类型并将其值设置为Config。我可以使用以下方法设置Name字段的值func(vValue)SetString(xstring)是reflect中的内置方法。有没有办法将[]string值直接设置为字段?请帮忙。 最佳答案 你可以为此使用js

reflection - 如何使用反射将数组值设置为 golang 中的字段?

我有一个包含以下字段的结构typeConfigstruct{Address[]stringNamestring}我正在从JSON格式的文件中读取此配置的值{"Address":["xx.xx.xx.xx","xx.xx.xx.xx"],"Name":"Name"}我已经使用Reflect来识别类型并将其值设置为Config。我可以使用以下方法设置Name字段的值func(vValue)SetString(xstring)是reflect中的内置方法。有没有办法将[]string值直接设置为字段?请帮忙。 最佳答案 你可以为此使用js

go - 使用反射使所有属性小写或大写?

我从客户端接收到未知的json,我解析为类似的界面varfinterface{}err:=json.Unmarshal(b,&f)如何让f中的所有键都变成小键?我必须将这个f保存到mongo,我需要进行一些查询,但如果有人发送大写的相同json,我想避免错误。 最佳答案 这是一种方法:varfinterface{}err:=json.Unmarshal(b,&f)f=lower(f)下面是:funclower(finterface{})interface{}{switchf:=f.(type){case[]interface{}:f

go - 使用反射使所有属性小写或大写?

我从客户端接收到未知的json,我解析为类似的界面varfinterface{}err:=json.Unmarshal(b,&f)如何让f中的所有键都变成小键?我必须将这个f保存到mongo,我需要进行一些查询,但如果有人发送大写的相同json,我想避免错误。 最佳答案 这是一种方法:varfinterface{}err:=json.Unmarshal(b,&f)f=lower(f)下面是:funclower(finterface{})interface{}{switchf:=f.(type){case[]interface{}:f

go - 如何通过反射初始化结构指针

我的目标是获取一个指向结构(但可以是任何类型)的nil指针,作为interface{}传递,并在其位置初始化一个结构.我的测试代码(playgroundlink)是:packagemainimport("fmt""reflect")typeFoostruct{Foostring}funcmain(){varx*Foovaryinterface{}=xfmt.Printf("Before:%#v\n",y)fmt.Printf("Goal:%#v\n",interface{}(&Foo{}))rv:=reflect.ValueOf(y)rv.Set(reflect.New(rv.Type

go - 如何通过反射初始化结构指针

我的目标是获取一个指向结构(但可以是任何类型)的nil指针,作为interface{}传递,并在其位置初始化一个结构.我的测试代码(playgroundlink)是:packagemainimport("fmt""reflect")typeFoostruct{Foostring}funcmain(){varx*Foovaryinterface{}=xfmt.Printf("Before:%#v\n",y)fmt.Printf("Goal:%#v\n",interface{}(&Foo{}))rv:=reflect.ValueOf(y)rv.Set(reflect.New(rv.Type

go - 使用反射设置字段

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