Golang動態(tài)調用方法小結
更新時間:2021年12月26日 10:29:59 作者:code301
本文主要介紹了Golang動態(tài)調用方法小結,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
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會通過反射去調用Hello,World方法

到此這篇關于Golang動態(tài)調用方法小結的文章就介紹到這了,更多相關Golang動態(tài)調用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
golang 生成對應的數(shù)據(jù)表struct定義操作
這篇文章主要介紹了golang 生成對應的數(shù)據(jù)表struct定義操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
深入理解Golang中的Protocol Buffers及其應用
本篇文章將深入探討 Go 語言中使用 Protobuf 的基礎知識、常見應用以及最佳實踐,希望能幫大家了解如何在項目中高效利用 Protobuf2024-11-11
Golang結合ip2region實現(xiàn)ip歸屬地查詢
ip2region - 是一個離線IP地址定位庫和IP定位數(shù)據(jù)管理框架,提供了眾多主流編程語言的 xdb 數(shù)據(jù)生成和查詢客戶端實現(xiàn),下面我們就來看看Golang如何結合ip2region實現(xiàn)ip歸屬地查詢吧2024-03-03

