转到导入模块“稍后”

user232343:

我们可以用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,但这给了我一个错误。

有一些解决方法吗?

Not_a_Golfer:

Go是一种静态编译的语言,而不是像Python这样的解释性语言。您的导入发生在编译时,而不是运行时。简而言之,不,您只能在程序包级别导入内容。

官方定义明确了这一点:

导入声明指出包含声明的源文件取决于导入包的功能,并允许访问该包的导出标识符。

关于导入的另一个有趣的注意事项是,如果导入了程序包并具有一个init()函数,则在程序启动时将调用此函数来初始化程序包;从文档:

如果程序包已导入,则在初始化程序包本身之前初始化导入的程序包

这为动态intiailization留了一些空间,但是离动态导入还很远。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章