3 回答
TA贡献1906条经验 获得超3个赞
相对路径总是被解释/解析为基本路径:当前或工作目录 - 因此它总是有其局限性。
如果您可以始终注意正确的工作目录,则可以继续使用相对路径。
我的建议是不要依赖工作目录,而是明确指定的基本路径。这可能在您的应用程序中具有硬编码的默认值(也可能是工作目录),您应该提供多种方法来覆盖其值。
覆盖“相对”路径所针对的基本路径的推荐方法:
命令行标志(见
flag
包)环境变量(参见
os.Getenv()
)(修复命名)用户主目录中的配置文件(参见
os/user/User
和os/user/Current()
)
一旦有了基本路径,就可以通过加入基本路径和相对路径来获得完整路径。您可以使用path.Join()
或filepath.Join()
,例如:
// Get base path, from any or from the combination of the above mentioned solutions
base := "/var/myapp"
// Relative path, resource to read/write from:
relf := "conf/patients.json"
// Full path that identifies the resource:
full := filepath.Join(base, relf) // full will be "/var/myapp/conf/patients.json"
TA贡献1854条经验 获得超8个赞
这不是路径的问题,而是你的设计问题。
你应该更仔细地设计你的代码。
据我所知,您在测试文件中共享相同的路径并显示运行。我想也许您json
在模型包中对路径进行了硬编码,但不建议这样做。
更好的方法是
模型包从全局配置中获取 json 路径,或使用
model := NewModel(config_path)
. 因此,reveal run 可以使用您想要的任何 json 初始化模型。../../conf/patients.json
在你的 xxxx_testing.go 中硬编码“ ”
- 3 回答
- 0 关注
- 151 浏览
添加回答
举报