我们可以用go通用导入模块吗?更清楚地说,这是用例:
package main
import (
"fmt"
"net/http"
)
json handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "you requested", r.URL.Path)
}
func main() {
var moduleName String = "/path/to/module"
import moduleName
http.HandleFunc("/", handler)
http.ListenAndServe(":8000", nil)
}
所以在主要方面,您可以看到我正在尝试导入moduleName,但这给了我一个错误。
有一些解决方法吗?
Go是一种静态编译的语言,而不是像Python这样的解释性语言。您的导入发生在编译时,而不是运行时。简而言之,不,您只能在程序包级别导入内容。
官方定义明确了这一点:
导入声明指出包含声明的源文件取决于导入包的功能,并允许访问该包的导出标识符。
关于导入的另一个有趣的注意事项是,如果导入了程序包并具有一个init()
函数,则在程序启动时将调用此函数来初始化程序包;从文档:
如果程序包已导入,则在初始化程序包本身之前初始化导入的程序包
这为动态intiailization留了一些空间,但是离动态导入还很远。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句