佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > golang 獲取當前執(zhí)行程序路徑的操作

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

熱門標簽:呼叫中心市場需求 網站排名優(yōu)化 地方門戶網站 百度競價排名 服務外包 AI電銷 Linux服務器 鐵路電話系統(tǒng)

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

1.獲取當前執(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])) //返回絕對路徑 filepath.Dir(os.Args[0])去除最后一個元素的路徑
 if err != nil {
  log.Fatal(err)
 }
 return strings.Replace(dir, "\\", "/", -1) //將\替換成/
}

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

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

測試使用

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

補充:golang下的GOPATH路徑問題

為了方便,我一般使用task來管理項目的編譯等事項,由于才入門go,所以碰到一個問題,以此篇為記。

背景

我需要開發(fā)一個組建,所以代碼結構沒有src目錄,并且項目放在GOPATH路徑的src目錄下

我在編譯二進制文件的時候使用了下面的命令

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

編譯報錯,提示import的類庫找不到

排錯分析

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

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

3、分析編譯命令找到問題

問題

我在編譯的時候重新定義了GOPATH路徑。在go語言編譯的時候,它會去找GOPATH和GOROOT下面的src目錄。

現在GOROOT=~/gopath/,那么首先編譯器到GOROOT下找import的包,如果沒有找到,則到GOPATH路徑下尋找

此時GOPATH=`pwd`,也就是項目路徑,那么它會到項目路徑下的src目錄下尋找。由于我沒有src目錄,所以找不到,從而編譯報錯

解決

問題其實出在GOPATH下,由于當前項目文件已經處于GOPATH的src下,所以只需要刪除GOPATH即可。

正確編譯命令:

GOBIN=`pwd` go install main.go

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Golang如何交叉編譯各個平臺的二進制文件詳解
  • Golang 運算符及位運算詳解
  • golang指數運算操作
  • golang切片反序實例
  • golang 實現interface{}轉其他類型操作
  • golang 實現tcp server端和client端,并計算RTT時間操作
  • golang HTTP 服務器 處理 日志/Stream流的操作
  • 淺談golang二進制bit位的常用操作

標簽:銅川 湘潭 蘭州 湖南 黃山 仙桃 崇左 衡水

巨人網絡通訊聲明:本文標題《golang 獲取當前執(zhí)行程序路徑的操作》,本文關鍵詞  ;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    闽清县| 睢宁县| 张家界市| 太湖县| 宁乡县| 衡阳市| 禹城市| 白水县| 太康县| 响水县| 蒙自县| 铜陵市| 大厂| 温州市| 沿河| 双鸭山市| 台山市| 鄯善县| 南京市| 阳山县| 南乐县| 民县| 防城港市| 历史| 元阳县| 孟连| 牡丹江市| 容城县| 阳城县| 岚皋县| 郧西县| 赞皇县| 黎城县| 江津市| 江口县| 垦利县| 额尔古纳市| 屏山县| 昆明市| 馆陶县| 大兴区|