Golang Go语言中请教一个获取脚本路径的问题
Golang Go语言中请教一个获取脚本路径的问题
假设有一个 a.go
如果 go build 并想获取 a.go 的路径是很简单的
或者 go run 然后获取 exe 的执行路径也是很简单的 很多种方法
那么问题来了,如何在不 build 的情况下执行 go run 并获取 a.go 的路径?
google 了很多回答,冇找到答案
1 回复
更多关于Golang Go语言中请教一个获取脚本路径的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go语言中获取脚本(可执行文件)的路径,通常可以使用标准库中的os
和path/filepath
包来实现。这里有一个简单的方法来获取当前可执行文件的路径:
- 使用
os.Args[0]
获取命令行中第一个参数,这通常是可执行文件的名称或路径。 - 使用
os.Executable
函数获取当前可执行文件的完整路径。
以下是一个示例代码,展示了如何获取当前可执行文件的路径:
package main
import (
"fmt"
"log"
"os"
)
func main() {
// 方法一:使用 os.Args[0]
// 注意:这种方法只能获取到命令行参数中的可执行文件名或相对路径
fmt.Println("os.Args[0]:", os.Args[0])
// 方法二:使用 os.Executable
// 这是获取当前可执行文件完整路径的推荐方法
exePath, err := os.Executable()
if err != nil {
log.Fatalf("Error getting executable path: %v", err)
}
fmt.Println("Executable path:", exePath)
// 如果你需要获取脚本所在的目录,可以使用 filepath.Dir
dir, err := filepath.Dir(exePath)
if err != nil {
log.Fatalf("Error getting directory of executable: %v", err)
}
fmt.Println("Directory of executable:", dir)
}
在上面的代码中,os.Executable
是获取可执行文件完整路径的最可靠方法。而os.Args[0]
虽然简单,但可能只包含文件名或相对路径,不适用于所有情况。