中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Golang動態調用方法是什么

發布時間:2021-12-27 08:13:16 來源:億速云 閱讀:131 作者:柒染 欄目:開發技術

Golang動態調用方法是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

main.go

package main
 
import (
 "lenu/call"
 "reflect"
)
 
 
type FuncCollection map[string]reflect.Value
 
func main() {
 _, _ = CallFunc("Hello", "執行Hello方法")
 _, _ = CallFunc("World", "執行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動態調用方法是什么

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

包头市| 思茅市| 兴业县| 富源县| 闽侯县| 洮南市| 交口县| 龙门县| 云梦县| 佛山市| 柘城县| 武胜县| 东城区| 普兰县| 阳谷县| 长春市| 普定县| 航空| 留坝县| 兰考县| 乌拉特前旗| 宜昌市| 延安市| 平原县| 古田县| 乐陵市| 瑞丽市| 忻城县| 静海县| 文昌市| 新蔡县| 沈丘县| 东乌珠穆沁旗| 清远市| 松阳县| 伊春市| 阳泉市| 新河县| 牟定县| 芜湖县| 延长县|