gpt4 book ai didi

go - 如何获取项目的根路径

转载 作者:IT王子 更新时间:2023-10-29 01:18:25 25 4
gpt4 key购买 nike

我运行以下代码 workingDir, _ := os.Getwd()在根项目下的 server.go 文件中获取根路径,现在我需要将 server.go 文件移动到以下结构

myapp
src
server.go

我想获取 go/src/myapp 的路径目前,在我将 server.go 移动到 myapp->src>server.go 下后,我得到了 go/src/myapp/src/server.go 我想获取预览路径,

我应该如何自动执行?或者我应该把 ../ 明确地放在获取路径中吗?

最佳答案

os.Getwd() 不返回您的源文件路径。它返回程序当前工作目录(通常是您执行程序的目录)。

例子:

假设我在 /Users/Arman/go/src/github.com/rmaan/project/main.go 中有一个 main.go 只输出 os.Getwd()

$ cd /Users/Arman/go/src/github.com/rmaan/project/
$ go run main.go
/Users/Arman/go/src/github.com/rmaan/project <nil>

如果我切换到其他目录并在那里执行,结果会改变。

$ cd /Users/Arman/
$ go run ./go/src/github.com/rmaan/project/main.go
/Users/Arman <nil>

IMO 你应该显式地将你想要的路径传递给你的程序,而不是试图从上下文中推断它(因为它可能会在生产环境中发生特殊变化)。这是一个带有 flag 包的示例。

package main

import (
"fmt"
"flag"
)


func main() {
var myPath string
flag.StringVar(&myPath, "my-path", "/", "Provide project path as an absolute path")
flag.Parse()

fmt.Printf("provided path was %s\n", myPath)
}

然后按如下方式执行你的程序:

$ cd /Users/Arman/go/src/github.com/rmaan/project/
$ go run main.go --my-path /Users/Arman/go/src/github.com/rmaan/project/
provided path was /Users/Arman/go/src/github.com/rmaan/project/
$ # or more easily
$ go run main.go --my-path `pwd`
provided path was /Users/Arman/go/src/github.com/rmaan/project/

关于go - 如何获取项目的根路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47531760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com