【发布时间】:2020-03-02 06:44:46
【问题描述】:
我在尝试获取导入包的路径时遇到了困难。当我在导入的包中打印os.Getwd() 的结果时,它显示的路径与main 包上的路径相同。
这是我做的。
项目结构
lib/lib.go
package lib
import "os"
import "fmt"
func init() {
dir, _ := os.Getwd()
fmt.Println("lib.init() :", dir)
}
func GetPath() {
dir, _ := os.Getwd()
fmt.Println("lib.GetPath() :", dir)
}
main.go
package main
import "os"
import "fmt"
import "test-import/lib"
func main() {
dir, _ := os.Getwd()
fmt.Println("main :", dir)
lib.GetPath()
}
结果
lib.init() : /Users/novalagung/Documents/go/src/test-import
main : /Users/novalagung/Documents/go/src/test-import
lib.GetPath() : /Users/novalagung/Documents/go/src/test-import
来自lib/lib.go 的os.Getwd() 的结果仍然与主路径相同。我想要的是包的真实路径/Users/novalagung/Documents/go/src/test-import/lib/
我该怎么办?有可能吗?
【问题讨论】:
-
os.Getwd在运行时返回与当前目录对应的根路径名。它与仅在编译时工作的源路径无关。也许告诉我们您需要解决什么问题。 -
@JiangYD “也许告诉我们您需要解决什么问题”,基本上我创建了一些应用程序,其中包含子应用程序,其中包含彼此不同的包。如果我能得到子文件夹的名称,它会让我更容易维护路线
-
@JiangYD 没关系,大卫回答解决了我的问题