如何在 Go 中访问不同文件夹但同一存储库中的文件?

问题描述 投票:0回答:1

假设我们有以下文件夹结构:

|-- Repo
|   |-- Data
|   |   |-- Sets
|   |   |   |-- Set1.json
|   |-- Tests
|   |---|-- Case1
|   |---|---|-- main.go

如果我想访问 Set1.json 文件,我该如何从 main.go 访问?假设我可以提供相对于存储库的相对路径,即将提供

Repo/Data/Sets
。有没有办法让我立即找出任何系统上涉及该相对路径的绝对路径?

我的解决方案是使用

os.Getwd
获取当前位置,然后使用:

tmp := filepath.Dir(filepath.Dir(currDir))

获取

main.go
所在文件夹父级的同级文件夹。然后我就这样做:

res := filepath.Join(tmp, "Data/Sets") 
Or
res := filepath.Join(tmp, "Data\\Sets")

这将为我提供 Sets 文件夹的绝对路径。有没有更聪明的方法可以到达那里?它应该适用于任何系统。

file go path directory
1个回答
0
投票

可以使用os.Executable()代替os.Getwd(),它支持在任何地方执行二进制文件时获取正确的路径。

© www.soinside.com 2019 - 2024. All rights reserved.