Golang動態(tài)調(diào)用方法小結
更新時間:2021年12月26日 10:29:59 作者:code301
本文主要介紹了Golang動態(tài)調(diào)用方法小結,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
main.go
package main import ( "lenu/call" "reflect" ) type FuncCollection map[string]reflect.Value func main() { _, _ = CallFunc("Hello", "執(zhí)行Hello方法") _, _ = CallFunc("World", "執(zhí)行World方法") } func CallFunc(tableName string, args ... interface{}) (result []reflect.Value, err error) { var router call.Routers FuncMap := make(FuncCollection, 0) rf := reflect.ValueOf(&router) rft := rf.Type() funcNum := rf.NumMethod() for i := 0; i < funcNum; i ++ { mName := rft.Method(i).Name FuncMap[mName] = rf.Method(i) } parameter := make([]reflect.Value, len(args)) for k, arg := range args { parameter[k] = reflect.ValueOf(arg) } result = FuncMap[tableName].Call(parameter) return }
package call:
router.go:
package call type Routers struct { }
hello.go
package call import "log" func (router *Routers) Hello(args ...interface{}) bool { log.Println(args[0]) return true }
world.go
package call import "log" func (router *Routers) World(args ...interface{}) bool { log.Println(args[0]) return true }
go run main.go會通過反射去調(diào)用Hello,World方法
到此這篇關于Golang動態(tài)調(diào)用方法小結的文章就介紹到這了,更多相關Golang動態(tài)調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
golang?防緩存擊穿singleflight的實現(xiàn)
本文主要介紹了golang?防緩存擊穿singleflight的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08Fedora14 Linux系統(tǒng)安裝Golang開發(fā)環(huán)境筆記
這篇文章主要介紹了Fedora14 Linux系統(tǒng)安裝Golang開發(fā)環(huán)境筆記,本文講解了2種安裝方法,需要的朋友可以參考下2014-10-10Golang學習筆記之延遲函數(shù)(defer)的使用小結
這篇文章主要介紹了Golang學習筆記之延遲函數(shù)(defer),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12