栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Golang-如何创建具有不同签名的函数片段?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang-如何创建具有不同签名的函数片段?

请检查它,我不知道它是否想要什么。因为我不知道你到底想要什么。

package mainimport (    "fmt"    "reflect")func A() {    fmt.Println("A")}func B(A int) {    fmt.Println("B", A)}func C(A string, B float32) {    fmt.Println("C", A, B)}func main() {    f := []interface{}{A, B, C}    f[0].(func())()    f[1].(func(int))(15)    f[2].(func(string, float32))("TEST", 90)    fmt.Println("n******* another thing ******")    for a, v := range f {        v := reflect.TypeOf(v)        fmt.Println("#######", a)        fmt.Println("num param :", v.NumIn())        for i := 0; i < v.NumIn(); i++ { fmt.Println("param :", i, "type is ", v.In(i))        }    }}

在Go
Playground
上检查

在这里,我有另一个使用反射调用的示例

package main    import (        "fmt"        "reflect"    )    func A() {        fmt.Println("A")    }    func B(A int) {        fmt.Println("B", A)    }    func C(A string, B float32) {        fmt.Println("C", A, B)    }    func main() {        f := []interface{}{A, B, C}        f[0].(func())()        f[1].(func(int))(15)        f[2].(func(string, float32))("TEST", 90)        fmt.Println("n******* calling with reflect ******")        for a, v := range f { v := reflect.TypeOf(v) //calling the function from reflect val := reflect.ValueOf(f[a]) params := make([]reflect.Value, v.NumIn()) if v.NumIn() == 1 {     params[0] = reflect.ValueOf(1564) } else if v.NumIn() == 2 {     params[0] = reflect.ValueOf("Test FROM reflect")     params[1] = reflect.ValueOf(float32(123456)) } val.Call(params)        }    }

在Go
Playground
上检查



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484182.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号