Go 语言在各种运行方式中的相对路径

 Golang  2021-09-18  admin  2293  3095

Go 语言在各种运行方式中的相对路径

获取当前可执行文件路径的方法:

package main

import (
   "log"
   "os"
   "os/exec"
   "path/filepath"
   "strings"
)

// GetAppPath 获取运行时的相对目录
func GetAppPath() string {
   file, _ := exec.LookPath(os.Args[0])
   path, _ := filepath.Abs(file)
   index := strings.LastIndex(path, string(os.PathSeparator))

   return path[:index]
}

测试

func main() {
   log.Println(GetAppPath()) // go run path.go    C:\Users\centphp\AppData\Local\Temp\go-build1787754725\b001\exe
   log.Println(GetAppPath()) // GoLand 运行    C:\Users\centphp\AppData\Local\Temp\GoLand
   log.Println(GetAppPath()) // path.exe运行   D:\go\src
}

go ru 和 go build 不一样,一个到临时目录下执行,一个可手动在编译后的目录下执行,路径的处理方式会不同。根本原因了,因为 go run 和 go build 的编译文件执行路径并不同,执行的层级也有可能不一样。

如果文章对您有帮助,点击下方的广告,支持一下作者吧!

相关推荐


linux 系统最简单的安装 go 开发环境步骤

1. 官网下载放在 /godev 目录https://golang.google.cn/dl/或wget https://dl.google.com/go/go1.22.2.linux-amd64.tar.gz或curl -O https://dl.google.com/go/go1.22.2.linux-386.tar.gz2. 解压tar -xvf go1.22.2.linux-amd64.t

go 生成密码 php的 password_hash go实现

packagemain import( "fmt" "golang.org/x/crypto/bcrypt" ) funcmain(){ hashedPassword:=passwordHash("123456") fmt.Println(hashedPassword) hashedPassword=

使用 govcl 开发桌面UI 在 Lazarus IDE 编译中报错

使用 govcl 开发桌面UI 在 Lazarus IDE 编译中报错go build -i -buildmode=exe -ldflags="-H windowsgui" -tags="tempdll" -o "project1.exe"flag provided but not defined: -iusage: go build [

go 实现php的 password_hash() 密码加密方法

go 实现php的 password_hash() 密码加密方法