最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

2.獲取當(dāng)前執(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下,由于當(dāng)前項目文件已經(jīng)處于GOPATH的src下,所以只需要刪除GOPATH即可。

正確編譯命令:

GOBIN=`pwd` go install main.go

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

相關(guān)文章

  • Go中RPC遠(yuǎn)程過程調(diào)用的實現(xiàn)

    Go中RPC遠(yuǎn)程過程調(diào)用的實現(xiàn)

    本文主要介紹了Go中RPC遠(yuǎn)程過程調(diào)用的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Go語言利用time.After實現(xiàn)超時控制的方法詳解

    Go語言利用time.After實現(xiàn)超時控制的方法詳解

    最近在學(xué)習(xí)golang,所以下面這篇文章主要給大家介紹了關(guān)于Go語言利用time.After實現(xiàn)超時控制的相關(guān)資料,文中通過示例介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Golang時間處理庫go-carbon?v2.2.13發(fā)布細(xì)則

    Golang時間處理庫go-carbon?v2.2.13發(fā)布細(xì)則

    這篇文章主要為大家介紹了Golang?時間處理庫go-carbon?v2.2.13發(fā)布細(xì)則,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • golang?run時報undefined錯誤的解決

    golang?run時報undefined錯誤的解決

    這篇文章主要介紹了golang?run時報undefined錯誤的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Golang切片刪除指定元素的三種方法對比

    Golang切片刪除指定元素的三種方法對比

    Go語言并沒有提供用于刪除元素的語法或接口,而是通過利用切片本身的特性來刪除元素—追加元素,這篇文章主要給大家介紹了關(guān)于Golang切片刪除指定元素的三種方法,需要的朋友可以參考下
    2022-06-06
  • GO語言中接口和接口型函數(shù)的具體使用

    GO語言中接口和接口型函數(shù)的具體使用

    本文主要介紹了GO語言中接口和接口型函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Go1.18新特性工作區(qū)模糊測試及泛型的使用詳解

    Go1.18新特性工作區(qū)模糊測試及泛型的使用詳解

    這篇文章主要為大家介紹了Go?1.18新特性中的工作區(qū)?模糊測試?泛型使用進行詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 詳解Go中defer與return的執(zhí)行順序

    詳解Go中defer與return的執(zhí)行順序

    Go?defer中改變return的值會生效嗎,這就設(shè)計到了GO語言中defer與return哪個先執(zhí)行的問題了,下面小編就通過簡單的示例來和大家講講吧
    2023-07-07
  • 淺談GO中的Channel以及死鎖的造成

    淺談GO中的Channel以及死鎖的造成

    本文主要介紹了淺談GO中的Channel以及死鎖的造成,文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 盤點幾種Go語言開發(fā)的IDE

    盤點幾種Go語言開發(fā)的IDE

    Go語言作為一種新興的編程語言,近年來受到了越來越多的關(guān)注,它以其簡潔、高效和并發(fā)性能而聞名,被廣泛應(yīng)用于各種軟件開發(fā)項目中,本文將介紹幾種常用的Go語言IDE,并對它們進行比較,幫助開發(fā)者根據(jù)自己的需求選擇合適的工具,需要的朋友可以參考下
    2023-11-11

最新評論

股票| 孝昌县| 曲水县| 甘肃省| 宁化县| 霍城县| 贺兰县| 三明市| 临泽县| 澄江县| 呼图壁县| 湘阴县| 辽宁省| 凤山市| 石棉县| 涟源市| 临高县| 竹北市| 谢通门县| 奎屯市| 滦平县| 湖南省| 赞皇县| 安庆市| 德阳市| 潮安县| 凉山| 嫩江县| 桃源县| 吴江市| 镇远县| 连云港市| 五台县| 潞城市| 洛宁县| 留坝县| 三都| 明溪县| 佳木斯市| 岐山县| 陆河县|