Go-go语言中使用reflect实现从类名(字符串)取得类实例

发布于 2016-12-12 20:22:47 字数 223 浏览 1367 评论 2

类似 java中:

private void ShowWindowByName(string name)
{
Form f = (Form)Activator.CreateInstance(Type.GetType(name));
f.Visible = true;
f.Show();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

想挽留 2017-10-24 01:27:56

愿望

type Goo struct{
  Id  int
  Fn func()
}
goo:=reflect相关的代码里.type用这个字符串("Goo")
goo.Id=1
goo.Fn=func(){....}

现实:
今天一直在reflect,text/template这两个包里转,以为会有启发,哎,毫无所得,貌似从字符串到类型(比如"int" 得到 int Type)是不太可能...(template里实现funcs也是靠字典的...)

T^T

求高手们给个说法

-------完善 v1--------------

package main;
import(
    fmt "fmt"
    _"reflect"
)

type Action func(w,r string)

type __ActionMap struct{
    action_map map[string]Action
}
func NewAction(action_name string,function Action){
    if ActionMap.action_map==nil{
        ActionMap.action_map=make(map[string]Action)
    }
    ActionMap.action_map[action_name]=function
}
func GetAction(action_name string)(Action){
    if k,v:=ActionMap.action_map[action_name];v{
        return k
    }
    return nil
}
var ActionMap =__ActionMap{}
func main() {
    /*
    var tempAction1=GetAction("action1")
    fmt.Println(tempAction1)
    tempAction1("response1","request1")

    var tempAction2=GetAction("action2")
    fmt.Println(tempAction2)
    tempAction2("response2","request2")
    */
    var config_file_loaded=map[string]string{"/index/":"action1","/auth/":"action2"}
    var routers=make(map[string]Action)
    for url,action_name:=range config_file_loaded{
        var tempAction=GetAction(action_name)
        routers[url]=tempAction
        tempAction(url,action_name)
    }
}
func init(){
    NewAction("action1",func(w,r string){
        fmt.Println(w,r)    
    })
    NewAction("action2",func(w,r string){
        fmt.Println("new ",w,r) 
    })
}

目前只能是匿名函数的干活╭(╯3╰)╮,先写个简单实现的参考(问题是解决了,不过还是对go的reflect有意见!!),看看大家的意见之后再完善吧,astaxie等你哟(╯▽╰)

夜无邪 2017-04-17 03:39:12

Java不懂,你想实现怎么样的功能

但是在Go里面可以使用reflect.New(type)函数生成相应的实例,而type你可以通过reflect.TypeOf获取相应变量的类型

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文