Golang Go语言中请教一个获取脚本路径的问题

发布于 1周前 作者 zlyuanteng 来自 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]虽然简单,但可能只包含文件名或相对路径,不适用于所有情况。

回到顶部