草庐IT

Reflection

全部标签

pointers - 如何在不使用反射的情况下优雅地在 golang 中动态调用方法?

我正在使用反射来做到这一点:method_name:=CommandMap[command]thing:=reflect.ValueOf(self).MethodByName(method_name)thing_s:=fmt.Sprintf("%s",thing)ifthing_s==""{self.writeMessage(550,"notallowed")}else{thing.Call([]reflect.Value{})}但必须有更好的方法。上面代码的目的是摆脱:ifcommand=="this"{runThis()}elseifcommand=="that"{runThat(

pointers - 如何在不使用反射的情况下优雅地在 golang 中动态调用方法?

我正在使用反射来做到这一点:method_name:=CommandMap[command]thing:=reflect.ValueOf(self).MethodByName(method_name)thing_s:=fmt.Sprintf("%s",thing)ifthing_s==""{self.writeMessage(550,"notallowed")}else{thing.Call([]reflect.Value{})}但必须有更好的方法。上面代码的目的是摆脱:ifcommand=="this"{runThis()}elseifcommand=="that"{runThat(

reflection - reflect.StructOf 在添加到 633ab74 之前存在什么替代方案?

我有一些使用reflect.StructOf的代码,大概会登陆go1.7。我几乎不知道,这直到大约2周前才可用,并且仅在当前master中可用。在添加此方法之前,如何在运行时创建自定义结构? 最佳答案 在添加reflect.StructOf之前,无法在运行时创建新的结构类型。 关于reflection-reflect.StructOf在添加到633ab74之前存在什么替代方案?,我们在StackOverflow上找到一个类似的问题: https://stack

reflection - reflect.StructOf 在添加到 633ab74 之前存在什么替代方案?

我有一些使用reflect.StructOf的代码,大概会登陆go1.7。我几乎不知道,这直到大约2周前才可用,并且仅在当前master中可用。在添加此方法之前,如何在运行时创建自定义结构? 最佳答案 在添加reflect.StructOf之前,无法在运行时创建新的结构类型。 关于reflection-reflect.StructOf在添加到633ab74之前存在什么替代方案?,我们在StackOverflow上找到一个类似的问题: https://stack

go - 如何使用第三方包中未导出的对象作为 golang 中的返回类型?

在我的用例中,我使用的是influxdb。我正在尝试在Golang中为influxdb创建一个全局客户端。但是当我从函数返回influxdb客户端时,客户端对象不会在influxdb包中导出。所以我无法返回。这是我的代码:packageinfluxclientimport("github.com/influxdata/influxdb/client/v2""log""time"//"net/http""fmt""reflect")const(INFLUXDB_NAME="XXXX"USERNAME="YYYY"PASSWORD="ZZZZ"HOST="http://localhost:

go - 如何使用第三方包中未导出的对象作为 golang 中的返回类型?

在我的用例中,我使用的是influxdb。我正在尝试在Golang中为influxdb创建一个全局客户端。但是当我从函数返回influxdb客户端时,客户端对象不会在influxdb包中导出。所以我无法返回。这是我的代码:packageinfluxclientimport("github.com/influxdata/influxdb/client/v2""log""time"//"net/http""fmt""reflect")const(INFLUXDB_NAME="XXXX"USERNAME="YYYY"PASSWORD="ZZZZ"HOST="http://localhost:

pointers - reflect如何获取返回的结构体指针

packagemainimport("fmt""reflect")typeBlogstruct{Namestring}func(blog*Blog)Test()(*Blog){fmt.Println("thisisTestmethod")blog.Name="robin"returnblog}funcmain(){varointerface{}=&Blog{}v:=reflect.ValueOf(o)m:=v.MethodByName("Test")rets:=m.Call([]reflect.Value{})fmt.Println(rets)}我得到了以下输出:这是测试方法[]为什么

pointers - reflect如何获取返回的结构体指针

packagemainimport("fmt""reflect")typeBlogstruct{Namestring}func(blog*Blog)Test()(*Blog){fmt.Println("thisisTestmethod")blog.Name="robin"returnblog}funcmain(){varointerface{}=&Blog{}v:=reflect.ValueOf(o)m:=v.MethodByName("Test")rets:=m.Call([]reflect.Value{})fmt.Println(rets)}我得到了以下输出:这是测试方法[]为什么

reflection - 为什么我不能使用反射来获取 slice 的地址?

这是如何工作的:slice:=make([]string,0,10)sliceptr:=&slice这也是:sliceptr:=&[]string{"foo","bar","baz"}但这不是:sliceaddrval:=reflect.ValueOf([]string{"foo","bar","baz"}).Addr()panic:reflect.Value.Addrofunaddressablevalue编辑:总的来说,我想要做的是采用一个未知类型的结构,制作该类型的一部分结构并返回指向它的指针(我正在使用github.com/jmoiron/modl这需要一个指向slice的指针

reflection - 为什么我不能使用反射来获取 slice 的地址?

这是如何工作的:slice:=make([]string,0,10)sliceptr:=&slice这也是:sliceptr:=&[]string{"foo","bar","baz"}但这不是:sliceaddrval:=reflect.ValueOf([]string{"foo","bar","baz"}).Addr()panic:reflect.Value.Addrofunaddressablevalue编辑:总的来说,我想要做的是采用一个未知类型的结构,制作该类型的一部分结构并返回指向它的指针(我正在使用github.com/jmoiron/modl这需要一个指向slice的指针