go語言包搜索路徑 go語言 包管理

Go語言中如何設置包的查找路徑

二進制包安裝的話:如果安裝在了默認位置例如/usr/local/go (Windows系統(tǒng):c:\Go)這個時候可以不需要設置GOROOT,如果改變了安裝的這個默認目錄,那么就需要設置GOROOTGOROOT的概念有點Go安裝目錄的意思GOPATH是一個開發(fā)環(huán)境目錄的意思,下面必須包含bin、pkg、src,然后再src下面新建項目就可以了你在沒有設置GOPATH的情況下,也可以把項目建在GOROOT/src下面,其實和GOPATH的概念類似

公司主營業(yè)務:網站建設、成都網站建設、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出南京免費做網站回饋大家。

golang的 GOPATH和vendor的搜索關系

golang的 GOPATH和vendor的搜索關系

項目只有一個包,即main包,沒有引用其他的包(golang自帶的系統(tǒng)包除外)。

然后設置GOPATH=path/to/goproject,再運行go build myproject,這樣就可以在任何目錄下面編譯,編譯生成的可執(zhí)行文件就在編譯所在的目錄下,而不是包源文件所在的目錄。

基本規(guī)則:

鑒于此,建議golang項目必須嚴格按照規(guī)范的目錄結構組織,哪怕是前面這種自包含的項目。

基本規(guī)則:

如果一個包在vendor和GOPATH下面都存在那么誰會優(yōu)先使用呢。

結論是:

包mydeps在vendor目錄下面和GOPATH路徑下面都存在了,那么main.go引用的時候只會引用vendor下面的mydeps(src/myproject/vendor/mydeps),而忽略GOPATH下面的mydeps包(src/mydeps)。

前面提到GOPATH和PATH類似,可以包含多個路徑,中間用分號隔開,go在搜索包的時候會按手續(xù)從前往后搜搜。那么vendor怎么處理層級關系呢。

規(guī)則是:

舉例:

如果src/mydep/mydep1/mydep.go引用了myvendor1和myvendor,那是怎么搜索的呢

4.1 Go語言中包(Packages)基礎知識

先看一下目錄結構,注意這里的src名稱是必須的,go在設置了GOPATH后,默認會添加src去尋找package,暫未查詢是否有方法不按照src查詢

根據(jù)上面的描述,Go語言中通過包中函數(shù)的名稱來區(qū)分公共函數(shù)和私有函數(shù),我們在main函數(shù)中是無法調用myPrivateFunc的

此時如果執(zhí)行通過go run方式執(zhí)行,會看到如下的提示信息,這與大部分語言對于包管理方式相關,所以我們通過兩種不同的方法來讓代碼執(zhí)行起來

返回如下,這里面對我們后續(xù)執(zhí)行有影響的兩個參數(shù)GO111MODULE和GOPATH

如果要使用gopath模式引用包,則需要關閉mod模式

設置GOPATH為當前路徑,即main.go所在的路徑

此時再查看go env時,GOPATH已經發(fā)生改變

我們再次嘗試執(zhí)行代碼

可以看到public函數(shù)被調用

名稱欄目:go語言包搜索路徑 go語言 包管理
當前地址:http://muchs.cn/article8/dospeip.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供、微信公眾號網站改版、全網營銷推廣Google、網站設計

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網站建設