Golang动态调用方法小结

 更新时间:2021年12月26日 10:29:59   作者:code301  
本文主要介绍了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动态调用方法小结的文章就介绍到这了,更多相关Golang动态调用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解 Go 语言中的 Context

    深入理解 Go 语言中的 Context

    这篇文章主要介绍了 理解 Go 语言中的 Context,需要的朋友可以参考下
    2020-06-06
  • GO语言make和new关键字的区别

    GO语言make和new关键字的区别

    本篇文章来介绍一道非常常见的面试题,到底有多常见呢?可能很多面试的开场白就是由此开始的。那就是 new 和 make 这两个内置函数的区别,希望对大家有所帮助
    2023-04-04
  • Go时间格式化的实现

    Go时间格式化的实现

    本文主要介绍了Go时间格式化的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Go语言中的复合类型详细介绍

    Go语言中的复合类型详细介绍

    这篇文章主要介绍了Go语言中的复合类型详细介绍,复合类型包括:结构体、数组、切片、Maps,需要的朋友可以参考下
    2014-10-10
  • golang雪花算法实现64位的ID的示例代码

    golang雪花算法实现64位的ID的示例代码

    本文展示了使用Go语言实现雪花算法生成64位ID的示例代码,雪花算法通过当前时间戳、工作节点ID、数据中心ID和序列号生成唯一的64位ID,确保在分布式系统中的唯一性和时间顺序性,感兴趣的可以了解一下
    2024-09-09
  • 详解Go语言中select语句的常见用法

    详解Go语言中select语句的常见用法

    这篇文章主要是来和大家介绍一下Go语言中select 语句的常见用法,以及在使用过程中的注意事项,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-07-07
  • Go Excelize API源码阅读Close及NewSheet方法示例解析

    Go Excelize API源码阅读Close及NewSheet方法示例解析

    这篇文章主要为大家介绍了Go Excelize API源码阅读Close及NewSheet方法示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 关于golang类型推断和变量重声明详解

    关于golang类型推断和变量重声明详解

    在Go语言中,类型推断可以根据变量的初始化值自动推断出变量的类型,而不需要显式地声明变量类型,变量重声明可以在同一作用域内重复声明一个变量,只要其中至少一个是新的变量,本就简单的给大家介绍一下golang类型推断和变量重声明,需要的朋友可以参考下
    2023-08-08
  • 如何使用大学教育邮箱下载golang等软件(推荐)

    如何使用大学教育邮箱下载golang等软件(推荐)

    这篇文章主要介绍了如何使用大学教育邮箱下载goland等软件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 基于golang时间转换的问题

    基于golang时间转换的问题

    下面小编就为大家带来一篇基于golang时间转换的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论