我有一个名为"seeder"的包:
package seeder
import "fmt"
func MyFunc1() {
fmt.Println("I am Masood")
}
func MyFunc2() {
fmt.Println("I am a programmer")
}
func MyFunc3() {
fmt.Println("I want to buy a car")
}
Run Code Online (Sandbox Code Playgroud)
现在我想用MyFunc前缀调用所有函数
package main
import "./seeder"
func main() {
for k := 1; k <= 3; k++ {
seeder.MyFunc1() // This calls MyFunc1 three times
}
}
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西:
for k := 1; k <= 3; k++ {
seeder.MyFunc + k ()
}
Run Code Online (Sandbox Code Playgroud)
而这个输出:
Run Code Online (Sandbox Code Playgroud)I am Masood I am a programmer I …
我从Python过渡到Go 时遇到了一些困难,而且我历来依赖内置实用程序函数(例如Python的dir )来列出底层方法和属性。
go中有等效的吗?
假设我有一些包裹
// ./somepkg/someFile.go
package somepkg
import "fmt"
func AnExportedFunc(someArg string) {
fmt.Println("Hello world!")
fmt.Println(someArg)
)
Run Code Online (Sandbox Code Playgroud)
然后从我的主要go文件导入
// ./main.go
package main
import (
"./somepkg" // Let's just pretend I have the full path written out
"fmt"
)
func main() {
fmt.Println("I want to get a list of exported funcs from package 'somefolder'")
}
Run Code Online (Sandbox Code Playgroud)
有没有办法从软件包“ somepkg”访问导出的函数,然后调用它们?参数编号/类型在somepkg中的所有函数之间将是一致的。我已经查看了反射包,但不确定是否可以获取列表并调用函数而不知道包名以外的任何信息。但是,我可能会缺少godocs中的某些内容,因此不胜感激。我想要做的基本上是拥有一个系统,人们可以在其中插入.go文件,作为一种“插件”。这些“插件”将具有一个导出的函数,主程序本身将使用一致的数量和类型的args对其进行调用。对此代码库的访问受到限制,因此贡献者可以随意执行任何代码,因此不会产生安全隐患。
注意:所有内容均已编译,因此没有运行时限制
我想做的是用python写的东西
# test.py
def abc():
print "I'm abc"
def cba():
print "I'm cba"
Run Code Online (Sandbox Code Playgroud)
和
# foo.py
import test
flist = filter(lambda fname: fname[0] != "_", …Run Code Online (Sandbox Code Playgroud)