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语言中获取脚本(可执行文件)的路径,通常可以使用标准库中的ospath/filepath包来实现。这里有一个简单的方法来获取当前可执行文件的路径:

  1. 使用os.Args[0]获取命令行中第一个参数,这通常是可执行文件的名称或路径。
  2. 使用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]虽然简单,但可能只包含文件名或相对路径,不适用于所有情况。

回到顶部