lengyizhou

第 1930 号会员 /

回复了 shenliezhang520 创建的主题: go make的疑问(新手急)

不是不是,package是包名 比如:package main, package redis,这样的 所有go文件除了注释外的第一行 你把两个文件的包名都改为 package main 。不用导入,直接可以在main中使用tt中的方法

回复了 devuser 创建的主题: 怎么用反射技术获取一个全局方法呢?

golang和其他动态语言,解释性语言不一样,不能直接通过反射就创建对应的struct或者func,需要先把函数等等先注册了 package main

import ( "fmt" "reflect" )

var funcMap map[string]interface{}

func GetName() string { return "this function's name is GetName..." }

func GetByFiledName(name string) (result []reflect.Value, err error) { function := reflect.ValueOf(funcMap[name]) in := make([]reflect.Value, 0) result = function.Call(in) return }

func init() { funcMap = make(map[string]interface{}) funcMap["GetName"] = GetName } func main() { r, err := GetByFiledName("GetName") if err != nil { fmt.Println(err) } req := r[0].Interface().(string) fmt.Println(req)

}