首页 > go 在一个文件中引入其他文件中的变量?

go 在一个文件中引入其他文件中的变量?

刚刚学习go语言,学web开发,有个这样的问题。
例如我在main方法中初始化了config 以及logger等信息,像下面这样:

gofunc main(){
   cfg := &web.Config{}
   server := web.NewServer(cfg)
   logger := server.Logger()

    //定义route信息 并制定处理的函数
    server.Get('/',blog.HomeController)
    server.ListenAndServe("127.0.0.1:9999")
}

然后我想在controller中用logger或者cfg这个变量 我该怎么操作,难道我又要重新定义并初始化一遍吗? 那我不是又得NewServer ?


可以在第三方包里面初始化全局变量,然后在main.go和controller里面都引入这个第三方包。


main也是一个包,有一个特别的地方在main这个包里必须有一个main()函数,并且现在看起来main包里定义的变量别的包是无法引用的。

所以你的目录结构可以是这样:

main.go
logger/logger.go

将logger需要的变量定义在logger.go里。并且根据go的symbol可见范围,需要大写。

题主需要按照golong.org的指引,一步步看文档。这些问题在http://golang.org/doc/code.html 里都有。中文版链接https://golang-china.appspot.com/doc/code.html


你只需要把cfg和logger定义到main的外面就可以了,然后在main里面赋值,切记赋值的时候用=而不是:=

    var cfg configtype
    var server webtype
    var logger logtype
    func main(){
       cfg = &web.Config{}
       server = web.NewServer(cfg)
       logger = server.Logger()

        //定义route信息 并制定处理的函数
        server.Get('/',blog.HomeController)
        server.ListenAndServe("127.0.0.1:9999")
    }
【热门文章】
【热门文章】