Golang reflect.FuncOf()函数的应用与案例

Golang reflect.FuncOf()函数的应用与案例

Go语言提供了运行时反射的内置支持,通过reflect包可让程序操纵具有任意类型的对象。Golang中的 reflect.FuncOf() 函数用于获取具有给定参数和结果类型的函数类型,例如,如果k表示int,e表示string,则FuncOf([]Type{k}, []Type{e}, false)代表func(int) string。要访问此函数,需要在程序中导入reflect包。

语法:

func FuncOf(in, out []Type, variadic bool) Type

参数: 此函数接受三个[]Type类型的参数(in,out)和一个bool类型的参数(variadic)。

返回值: 此函数返回具有给定参数和结果类型的函数类型。

以下示例说明了在Golang中使用上述方法的用法:

示例1:

// Golang程序演示
// reflect.FuncOf()函数

package main

import (
    "fmt"
    "reflect"
)

//主函数
func main() {

    ta := reflect.ArrayOf(5, reflect.TypeOf(123))

    tc := reflect.ChanOf(reflect.SendDir, ta)

    tp := reflect.PtrTo(ta)

    //使用FuncOf方法
    tf := reflect.FuncOf([]reflect.Type{ta},
              []reflect.Type{tp, tc}, false)
    fmt.Println(tf)
} 

输出:

func([5]int) (*[5]int, chan<- [5]int)

示例2:

// Golang程序演示
// reflect.FuncOf()函数

package main

import (
    "fmt"
    "reflect"
)

//主函数
func main() {

    var k = reflect.TypeOf(0)
    var e = reflect.TypeOf("")

    //使用FuncOf方法
    fmt.Println(reflect.FuncOf([]reflect.Type{k},
              []reflect.Type{e}, false).String())
} 

输出:

func(int) string

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程