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

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

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

我就廢話(huà)不多說(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),由于才入門(mén)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的類(lèi)庫(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)文章

  • Golang switch語(yǔ)句的具體使用

    Golang switch語(yǔ)句的具體使用

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

    Go singleflight使用以及原理

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

    Go語(yǔ)言中你不知道的Interface詳解

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

    詳解Go語(yǔ)言如何判斷兩個(gè)對(duì)象是否相等

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

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

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

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

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

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

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

    Go?1.22版本新特性前瞻

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

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

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

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

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

最新評(píng)論