通过指定路径从函数内部获取 Go 文件
Get a Go file from inside a function by the specified path
大家好 ) 我正在尝试 运行 指定数据库的代码。
该项目包含一个包“客户端”,其中包含每个客户端(数据库名称)的子包。每个 sub_package 都有带函数 运行() 的“run.go”文件,我想使用它
-项目:
-- 客户:
---client_1
---run.go
---client_2
---run.go
---client_3
---run.go
--main.go
主文件如下所示:
package main
import (
"flag"
"fmt"
"os"
)
func main() {
var impl string
flag.StringVar(&datbase_name, "database_name", "", "implementation database")
file_path = fmt.SprintF("./clients/%s", datbase_name)
file, err := os.Open(file_path)
if err != nil{
fmt.Println("Unable to open file:", err)
os.Exit(1)
}
defer file.Close()
file.Run()
但它不起作用,我明白为什么(我们只能读取文件,但不能使用它)
在Python中,我们可以使用内部导入(在函数内部),但在Go中不能
所以我不知道如何传递它(
Go 本身不允许您 运行 在 Go 中编写 Go 代码。虽然您可以使用 interpreter,但我建议只将函数加载到映射中并从那里调用它们。
func main() {
var clients = map[string]func () {
"client1": client1.Run,
"client2": client2.Run,
}
var database_name string
flag.StringVar(&database_name, "database_name", "", "implementation database")
clients[database_name]()
}
您必须调整 func
参数和 returns 客户端函数。
大家好 ) 我正在尝试 运行 指定数据库的代码。 该项目包含一个包“客户端”,其中包含每个客户端(数据库名称)的子包。每个 sub_package 都有带函数 运行() 的“run.go”文件,我想使用它
-项目:
-- 客户:
---client_1
---run.go
---client_2
---run.go
---client_3
---run.go
--main.go
主文件如下所示:
package main
import (
"flag"
"fmt"
"os"
)
func main() {
var impl string
flag.StringVar(&datbase_name, "database_name", "", "implementation database")
file_path = fmt.SprintF("./clients/%s", datbase_name)
file, err := os.Open(file_path)
if err != nil{
fmt.Println("Unable to open file:", err)
os.Exit(1)
}
defer file.Close()
file.Run()
但它不起作用,我明白为什么(我们只能读取文件,但不能使用它)
在Python中,我们可以使用内部导入(在函数内部),但在Go中不能
所以我不知道如何传递它(
Go 本身不允许您 运行 在 Go 中编写 Go 代码。虽然您可以使用 interpreter,但我建议只将函数加载到映射中并从那里调用它们。
func main() {
var clients = map[string]func () {
"client1": client1.Run,
"client2": client2.Run,
}
var database_name string
flag.StringVar(&database_name, "database_name", "", "implementation database")
clients[database_name]()
}
您必须调整 func
参数和 returns 客户端函数。