1. 当前工作目录
应用场景:
- 处理用户输入的文件路径
- 需要基于启动位置的相对路径操作
注意:在容器化部署时,工作目录可能与应用目录不同
三、可执行文件路径获取
可靠方案:
典型值对比:
四、项目根目录定位
1. 基于运行时调用栈
2. 构建时注入(推荐)
3. 环境变量配置
五、特殊场景处理
测试环境
测试用例的工作目录通常是_test
文件所在目录:交叉编译
- 使用
-trimpath
编译参数避免暴露本地路径 - 通过
embed
包内嵌资源文件
- 使用
容器化部署
六、总结对比
最佳实践建议:
- 生产环境优先使用构建时注入或环境变量
- 开发环境可使用
runtime.Caller
+go.mod
回溯 - 避免依赖相对路径,特别是需要跨平台时
- 重要路径配置应加入单元测试验证