<2> go -反射-函数map化

原创 2015年11月18日 23:04:01

代码编程中,用方法调用匹配名字的函数,非常有效

利用go的反射机制可以实现


import (
    "errors"
    "fmt"
    "reflect"
)

func foor() {
    fmt.Println("Start->foor()")
}

func say(number int) {
    fmt.Printf("This text is %d", number)
}

func Call(m map[string]interface{}, name string, params ...interface{}) (result []reflect.Value, err error) {
    f := reflect.ValueOf(m[name])
    if len(params) != f.Type().NumIn() {
        err = errors.New("The number of params is not adapted.")
        return
    }
    in := make([]reflect.Value, len(params))
    for k, param := range params {
        in[k] = reflect.ValueOf(param)
    }
    result = f.Call(in)
    return
}

func main() {
    fmt.Println("Start Main func()")
    // map 直接调用函数
    funcs := map[string]func(){"foor": foor}
    funcs["foor"]()
    // 反射
    xfuncs := map[string]interface{}{"say": say}
    Call(xfuncs, "say", 123)

}

// 输出
// Start->foor()
// This text is 123

RxAndroid之Action,Func,map,flatmap的简单用法。

继续学习Rx,苦逼苦逼,感觉智商不够用了呢。 主要总结一下Action,Func,map,flatmap的简单用法,以及线程切换的使用。 原理,依然不明。Action场景:观察者输出一句被观察者传...
  • v849110018
  • v849110018
  • 2016年09月01日 17:45
  • 1232

map[string]Interface{}

Go不是一种典型的OO语言,它在语法上不支持类和继承的概念。 没有继承是否就无法拥有多态行为了呢?答案是否定的,Go语言引入了一种新类型—Interface,它在效果上实现了类似于C++的“多态”概...
  • linuxheik
  • linuxheik
  • 2016年09月23日 17:32
  • 3637

go语言之map的使用

go语言之map的使用 go语言的map,和c/C++语言的功能使用差不多,但是也存在很多差别。map在go语言大并发业务开发中是经常用,例如用户信息的广播等。 下面看看相关使用代码 map的遍历...
  • bojie5744
  • bojie5744
  • 2015年01月28日 16:14
  • 2716

go-反射机制

思路   结构对象映射出来:类名,成员名,成员值 package dao import (     _ "ChbeeGoTest/models"     "ChbeeGoTest/utils/...
  • shuanger_
  • shuanger_
  • 2015年09月02日 17:23
  • 401

Golang 全面展示反射技术使用 (一)

全面展示Go语言反射技术的使用
  • zhengzizhi
  • zhengzizhi
  • 2017年06月17日 15:35
  • 641

Go 根据字符串调用指定函数

随学随记,留备查 1、初学web设计,咱不想使用第三方库;于是乎HandleFunc()写的满屏都是……就想着模拟MVC思想,根据URL的路径自动调用指定的控制器方法,岂不是很好; 2、尝试使用Go的...
  • HOOKTTG
  • HOOKTTG
  • 2016年08月11日 17:25
  • 1991

go语言map的内部实现及传参

我们知道go的内置函数make返回一个Type类型的对象 func make(Type, size IntegerType) Type  然后直接上源码: // Builds a typ...
  • btqszl
  • btqszl
  • 2017年08月28日 17:40
  • 508

golang语言中map的初始化及使用

golang语言中map的初始化及使用
  • iamlihongwei
  • iamlihongwei
  • 2017年12月20日 16:23
  • 87

第5课 Go的map

map for-range map间接排序 map-slice
  • lhdalhd1996
  • lhdalhd1996
  • 2016年07月28日 10:26
  • 199

Golang的反射机制(The Laws of Reflection)

原文来自The Go Bloghttp://blog.golang.org/laws-of-reflection Introduction(简介)反射机制能够在陈故乡运行过程中检查自身元素的结构,类型...
  • xiaohu50
  • xiaohu50
  • 2015年10月29日 20:57
  • 2346
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:<2> go -反射-函数map化
举报原因:
原因补充:

(最多只允许输入30个字)