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

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

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

我就廢話不多說(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ò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

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

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

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

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

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

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

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

    golang?run時(shí)報(bào)undefined錯(cuò)誤的解決

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

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

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

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

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

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

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

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

    Go?defer中改變r(jià)eturn的值會(huì)生效嗎,這就設(shè)計(jì)到了GO語(yǔ)言中defer與return哪個(gè)先執(zhí)行的問(wèn)題了,下面小編就通過(guò)簡(jiǎn)單的示例來(lái)和大家講講吧
    2023-07-07
  • 淺談GO中的Channel以及死鎖的造成

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

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

    盤點(diǎn)幾種Go語(yǔ)言開(kāi)發(fā)的IDE

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

最新評(píng)論

冕宁县| 英山县| 枣强县| 宁化县| 色达县| 西贡区| 枞阳县| 峨山| 灯塔市| 富民县| 临安市| 蚌埠市| 安康市| 沁水县| 涟水县| 长寿区| 涞源县| 普定县| 安塞县| 齐齐哈尔市| 那坡县| 南和县| 滕州市| 东丰县| 巴里| 广饶县| 莆田市| 黄陵县| 监利县| 江华| 孟村| 扎鲁特旗| 通山县| 西安市| 荔波县| 罗平县| 敖汉旗| 广德县| 含山县| 石城县| 木兰县|