一尘不染

如何从Go中的字符串按路径导入包?

go

我有一个名称为package的字符串(例如“ my / package / test”),我想导入该字符串并从package调用一些函数。

像这样:

func init() {
  var pkg string = "test/my/pkg"
  import pkg
  pkg.Test()
}

PS。感谢帮助


阅读 231

收藏
2020-07-02

共1个答案

一尘不染

Go语言不允许您在示例中提到的内容。这是一个有意识的选择。我认为,这种选择的原因与编译器的性能以及机器对代码的理解容易程度有关。例如,这可以启用诸如gofix之类的工具,这些工具可以部分修复Go代码,而无需用户干预。

它还使程序员可以清楚地看到程序使用的所有静态导入的程序包。

另请参阅Go语言规范中有关源文件组织的语法规则。


关于在运行时动态加载程序包:Go不支持在运行时加载程序包。将来的Go运行时可能会实现此功能(例如,偶尔会在golang-
nuts邮件列表中的消息中请求它),但是当前状态是不支持此功能。

2020-07-02