主頁(yè) > 知識(shí)庫(kù) > golang 獲取當(dāng)前執(zhí)行程序路徑的操作

golang 獲取當(dāng)前執(zhí)行程序路徑的操作

熱門標(biāo)簽:利用地圖標(biāo)注位置 赤峰電銷 杭州人工智能電銷機(jī)器人費(fèi)用 400開(kāi)頭電話怎樣申請(qǐng) 江蘇呼叫中心外呼系統(tǒng)有效果嗎 貴州電話智能外呼系統(tǒng) 官渡電銷外呼管理系統(tǒng)怎么收費(fèi) 谷歌美發(fā)店地圖標(biāo)注 地圖區(qū)域圖標(biāo)注后導(dǎo)出

我就廢話不多說(shuō)了,大家還是直接看代碼吧~

1.獲取當(dāng)前執(zhí)行程序路徑

func execPath() (string, error) {
 file, err := exec.LookPath(os.Args[0])
 if err != nil {
  return "", err
 }
 re, err := filepath.Abs(file)
 if err != nil {
  logs.Error("The eacePath failed: %s\n", err.Error())
 }
 flog.Infoln("The path is ", re)
 return filepath.Abs(file)
}
func GetCurrentDirectory() string {
 dir, err := filepath.Abs(filepath.Dir(os.Args[0])) //返回絕對(duì)路徑 filepath.Dir(os.Args[0])去除最后一個(gè)元素的路徑
 if err != nil {
  log.Fatal(err)
 }
 return strings.Replace(dir, "\\", "/", -1) //將\替換成/
}

2.獲取當(dāng)前執(zhí)行程序目錄

func GetCurrentDirectory() string {
 //返回絕對(duì)路徑 filepath.Dir(os.Args[0])去除最后一個(gè)元素的路徑
 dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
 if err != nil {
 log.Fatal(err)
 }
 
 //將\替換成/
 return strings.Replace(dir, "\\", "/", -1) 
}

測(cè)試使用

func main() {
 dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
 if err != nil {
   log.Fatal(err)
 }
 fmt.Println(dir)
}

補(bǔ)充:golang下的GOPATH路徑問(wèn)題

為了方便,我一般使用task來(lái)管理項(xiàng)目的編譯等事項(xiàng),由于才入門go,所以碰到一個(gè)問(wèn)題,以此篇為記。

背景

我需要開(kāi)發(fā)一個(gè)組建,所以代碼結(jié)構(gòu)沒(méi)有src目錄,并且項(xiàng)目放在GOPATH路徑的src目錄下

我在編譯二進(jìn)制文件的時(shí)候使用了下面的命令

GOPATH=`pwd` GOBIN=`pwd` go install main.go

編譯報(bào)錯(cuò),提示import的類庫(kù)找不到

排錯(cuò)分析

1、檢查env是否正確 命令:go env,檢查結(jié)果正常

2、檢查golang的GOPATH和GOROOT配置是否正常,檢查通過(guò)

3、分析編譯命令找到問(wèn)題

問(wèn)題

我在編譯的時(shí)候重新定義了GOPATH路徑。在go語(yǔ)言編譯的時(shí)候,它會(huì)去找GOPATH和GOROOT下面的src目錄。

現(xiàn)在GOROOT=~/gopath/,那么首先編譯器到GOROOT下找import的包,如果沒(méi)有找到,則到GOPATH路徑下尋找

此時(shí)GOPATH=`pwd`,也就是項(xiàng)目路徑,那么它會(huì)到項(xiàng)目路徑下的src目錄下尋找。由于我沒(méi)有src目錄,所以找不到,從而編譯報(bào)錯(cuò)

解決

問(wèn)題其實(shí)出在GOPATH下,由于當(dāng)前項(xiàng)目文件已經(jīng)處于GOPATH的src下,所以只需要?jiǎng)h除GOPATH即可。

正確編譯命令:

GOBIN=`pwd` go install main.go

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Golang如何交叉編譯各個(gè)平臺(tái)的二進(jìn)制文件詳解
  • Golang 運(yùn)算符及位運(yùn)算詳解
  • golang指數(shù)運(yùn)算操作
  • golang切片反序?qū)嵗?/li>
  • golang 實(shí)現(xiàn)interface{}轉(zhuǎn)其他類型操作
  • golang 實(shí)現(xiàn)tcp server端和client端,并計(jì)算RTT時(shí)間操作
  • golang HTTP 服務(wù)器 處理 日志/Stream流的操作
  • 淺談golang二進(jìn)制bit位的常用操作

標(biāo)簽:泰安 黔西 鷹潭 武漢 宜春 河池 松原 保定

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang 獲取當(dāng)前執(zhí)行程序路徑的操作》,本文關(guān)鍵詞  golang,獲取,當(dāng)前,執(zhí)行,程序,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang 獲取當(dāng)前執(zhí)行程序路徑的操作》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于golang 獲取當(dāng)前執(zhí)行程序路徑的操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章