在同一包中的两个源文件之间共享变量

4
我正在进行一个Go项目。为了组织,我将代码分成几个文件:
- 与服务器相关的函数放在server.go中 - 数据库处理放在db.go中 - 全局变量在types.go中 - 等等。
我在types.go中声明了一个变量document_root,并在main.go中定义它:
document_root,error := config.GetString("server","document_root")

server.go 中,我有一个函数用于生成所请求文件的 HTTP 状态码,其内容如下:
_, err := os.Stat(document_root+"/"+filename);

编译时,我遇到了以下错误:

"document_root被声明但未使用"

我做错了什么?

1个回答

7
我假设在types.go中,您正在声明document_root在包范围内。如果是这样,问题出在这行代码上:
document_root, error := config.GetString("server", "document_root")

这里,您无意中创建了另一个局部于main函数的document_root变量。您需要编写类似这样的代码:

var err error
document_root, err = config.GetString("server", "document_root")

哦,好的,问题解决了。看了一下语言规范页面,我没意识到“:=”会重新声明它。 - eggbertx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接