go - 如何从Go中的子文件夹访问配置文件

标签 go path

我的项目结构看起来很像这样:

project/
    api/
        api.go
    config/
        config.go
        config.toml
    tests/
        api_test.go
    main.go

因此,每当我初始化配置包时,我都会尝试使用相对路径读取配置文件:config/config.toml。 只要我运行我的程序,它就可以正常工作:go run main.go

当我尝试运行测试时出现问题:go test project/tests。我的配置包找不到文件 config/config.toml,因为当前工作目录不是第一种情况下的 project/,而是 project/tests/

有什么方便的方法可以从runtest 访问配置文件吗?

最佳答案

最后,我完成了更改配置文件加载方式的行为。之前,加载是在 config 中完成的,打包在 init() 方法中。

取而代之的是,我创建了方法 Load(path string),它根据传递的 path 变量执行配置文件的加载。

现在,我从 main.go 中这样调用它:

config.Load("config/")   

然后从 api_test.go 像这样:

config.Load("../config/")

这不是一个很好的解决方案,但在那种情况下,用户在运行测试时不需要指定任何额外的参数。

关于go - 如何从Go中的子文件夹访问配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32355314/

相关文章:

postgresql - postgres 抛出错误 : null value in column "id" violates not-null constraint even when value is actually not null

mysql - 如何在 GoLang 中的不同处理程序上全局共享 MySQL 驱动程序

go - 检查是否安装了系统包退出程序

objective-c - 沿圆弧变换路径

windows - 如何从批处理文件中持久设置 Windows 7 中的变量?

path - Karate Mock Server - 匹配请求中包含特定字符串的请求正文

python - 我的 Django 安装在哪里?

pointers - X不实现Y(…方法具有指针接收器)

go - 在非默认命名空间中部署时,Cluster Config 无法获取 Pod

css - wp_enqueue_script 在文件路径中过早包含插件目录