go如何把string类型转换成func

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go如何把string类型转换成func相关的知识,希望对你有一定的参考价值。

亲您好,关于go:在GoLang中将字符串投射为func类型

go
Casting a string to a func type in GoLang
我有一个字符串,它是GoLang中函数的名称。
我想将它们视为功能。 我应该怎么做? 我试图通过反射来实现它。*但是我没有找到适合我目的的有效路径。

我在JSON文件中获得处理程序的名称,并且我想执行这些处理程序。 像这样:

"students/show" :"ShowStudents",
"students/add" :"AddStudents"

然后我想执行ShowStudents(),但不知道如何将其视为类型为func的变量

相关讨论
需要明确的是,Go不支持其他语言(例如C ++)那样的强制转换。 标题暗示不可能的事情。 但是,可以通过其他方式实现您的追求。
您的任务可以分为两个步骤:

提取函数名称
运行这些函数(假设它们在某处定义)
对于第1步,我将把JSON解组到map [string] string中,如下所示:

b, err := ioutil.ReadFile(fname)
mp := make(map[string]string)
json.Unmarshal(b, &mp)
转到步骤2。在Go中,不可能将string直接转换为函数调用,但是可以使用reflect包枚举对象的方法。 在这种情况下,可以将其用作解决方法。 与其直接编写这些函数,不如将它们绑定到一个虚拟类型,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
type T int

func (t T) ShowStudents()
fmt.Println("Showing Students")


func (t T) AddStudents()
fmt.Println("Adding Students")


func main()
var t T
reflect.ValueOf(t).MethodByName("ShowStudents").Call(nil)

运行这个例子

在json文件中的键和函数之间建立映射,然后使用它们来调用出现在json中的函数

package main

import (
"encoding/json"
"fmt"
)

func AddStudents()
fmt.Println("woo")


func ShowStudents()
fmt.Println("lots of students")


func main()
js := `
"students/show" :"ShowStudents",
"students/add" :"AddStudents"
`

lookup := make(map[string]string)
json.Unmarshal([]byte(js), &lookup)
dispatch := make(map[string]func())
dispatch["students/show"] = ShowStudents
dispatch["students/add"] = AddStudents

for v, _ := range lookup
print(v)
dispatch[v]()
参考技术A 日将String转换成其他数据类型时,要确保其参数能被转换成有效数据,若将“hello"转换成整数,那么Go会将其转换成0,其他类型也是转换成0所对应的值

以上是关于go如何把string类型转换成func的主要内容,如果未能解决你的问题,请参考以下文章

java中如何把string类型转换成int类型

c# 中如何把 string 类型如何转换为uint类型啊?

如何将string类型的数字转换成int

如何把一个long型转换成日期

如何将string类型转换成short

java中如何把string类型转换成int类型