欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2020年12月16日 14:41:16   作者:whatday  
這篇文章主要介紹了golang 獲取當前程序執(zhí)行路徑的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

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ā)一個組建,所以代碼結(jié)構(gòu)沒有src目錄,并且項目放在GOPATH路徑的src目錄下

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

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

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

排錯分析

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

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

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

問題

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

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

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

解決

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

正確編譯命令:

GOBIN=`pwd` go install main.go

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

相關(guān)文章

  • Golang switch語句的具體使用

    Golang switch語句的具體使用

    switch 語句提供了一種簡潔的方式來執(zhí)行多路分支選擇,本文主要介紹了Golang switch語句的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Go singleflight使用以及原理

    Go singleflight使用以及原理

    singleflight官方解釋其為:singleflight提供了一個重復的函數(shù)調(diào)用抑制機制。通俗的解釋其作用是,若有多個協(xié)程運行某函數(shù)時,只讓一個協(xié)程去處理,然后批量返回。非常適合來做并發(fā)控制。常見用于緩存穿透的情況
    2023-01-01
  • Go語言中你不知道的Interface詳解

    Go語言中你不知道的Interface詳解

    對于go語言來說,設(shè)計最精妙的應該是interface了,直白點說interface是一組method的組合。下面這篇文章主要給大家介紹了關(guān)于Go語言中你不知道的Interface的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2018-02-02
  • 詳解Go語言如何判斷兩個對象是否相等

    詳解Go語言如何判斷兩個對象是否相等

    在編程中,判斷兩個對象是否相等是一項常見的任務(wù),同時判斷對象是否相等在很多情況下都非常重要,所以在接下來的內(nèi)容中,我們將詳細介紹在?Go?語言中如何判斷對象是否相等的方法和技巧,需要的可以參考一下
    2023-06-06
  • Go語言的http/2服務(wù)器功能及客戶端使用

    Go語言的http/2服務(wù)器功能及客戶端使用

    Golang 有一個很棒的自帶 http 服務(wù)器軟件包,不用說就是: net/http, 它非常簡單,但是功能非常強大。下面這篇文章主要給大家介紹了關(guān)于Go語言的http/2服務(wù)器功能及客戶端使用的相關(guān)資料,需要的朋友可以參考下
    2018-09-09
  • Go?函數(shù)中獲取調(diào)用者的函數(shù)名和文件名及行號

    Go?函數(shù)中獲取調(diào)用者的函數(shù)名和文件名及行號

    這篇文章主要介紹了Go?函數(shù)中獲取調(diào)用者的函數(shù)名和文件名及行號,文章圍主題詳細內(nèi)容展開相關(guān)介紹,感興趣的小伙伴可以參考一下
    2022-05-05
  • 一文帶你了解Go語言中函數(shù)設(shè)計的實踐示例

    一文帶你了解Go語言中函數(shù)設(shè)計的實踐示例

    良好設(shè)計的函數(shù)具有清晰的職責和邏輯結(jié)構(gòu),提供準確的命名和適當?shù)膮?shù)控制,下面我們將一一描述函數(shù)設(shè)計時能夠遵循的最佳實踐,希望對大家有所幫助
    2023-06-06
  • Go?1.22版本新特性前瞻

    Go?1.22版本新特性前瞻

    這篇文章主要為大家介紹了Go?1.22版本新特性前瞻,包含語言的變化,編譯器、運行時與工具鏈等應用對比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • 利用Golang實現(xiàn)對配置文件加密

    利用Golang實現(xiàn)對配置文件加密

    在實際的應用中,配置文件通常包含了一些敏感的信息,如數(shù)據(jù)庫密碼、API密鑰等,為了保護這些敏感信息不被惡意獲取,我們可以對配置文件進行加密,本文將介紹如何使用Go語言實現(xiàn)對配置文件的加密,需要的朋友可以參考下
    2023-10-10
  • golang?gorm學習之如何指定數(shù)據(jù)表

    golang?gorm學習之如何指定數(shù)據(jù)表

    在sql中首先要指定是從哪張表中查詢,所以這篇文章小編就來帶大家一起看一下gorm是如何根據(jù)model來自動解析表名的,感興趣的小伙伴可以了解下
    2023-08-08

最新評論