1. 程式人生 > 程式設計 >淺談goland匯入自定義包時出錯(一招解決問題)

淺談goland匯入自定義包時出錯(一招解決問題)

使用goland編寫go語言程式的時候,發現針對自定義的包無法引入。

如下圖所示:

具體錯誤也就是

main.go:13:2: cannot find package "grpool" in any of:

淺談goland匯入自定義包時出錯(一招解決問題)

然後就各種在網上查詢,大多數也都講得很不清楚,最後找到一個說的比較詳細的連結 //www.jb51.net/article/202148.htm。

但是這個連結也只是啟發了我。下面來圖形結合的方式講述我的方法。

(1)首先將之前定義的包和包下的檔案移至到新定義的目錄src下,我的目錄結構如下:

淺談goland匯入自定義包時出錯(一招解決問題)

(2) 接下來在File->Settings下的Go下面可以看到GOROOT和GOPATH兩個。

淺談goland匯入自定義包時出錯(一招解決問題)

GOROOT其實就是go語言安裝的所在目錄

淺談goland匯入自定義包時出錯(一招解決問題)

GOPATH說實在的我也不知道是幹啥的,反正在網上查的都是要設定設麼GOPATH之類的。於是這個GOPATH就引起我的重視了。

淺談goland匯入自定義包時出錯(一招解決問題)

當然我們只想設定的這個包在這個工程下就可以了,那我們就直接點選下面的一個加號,新增工程所在的路徑。如下圖所示:

淺談goland匯入自定義包時出錯(一招解決問題)

最後都一切OK了。問題全部解決啦。

看到這你覺得很簡單,可以說這對初學者來說卻是花費了很大的力氣才解決的。

補充:在GoLand下使用go mod匯入自定義包與第三方包時需清除Project GOPATH配置

1、在GoLand下使用go mod匯入自定義包與第三方包

問題描述:在學習github的gokit微服務專案過程中,使用GoLand匯入專案檔案,但配置自定義包和第三方包時,雖能正常go get,且在./pkg/mod/github.com目錄下能找到對應的下載檔案,但仍無法import成功;報package xxx is not in GOROOT的錯誤;同時出現 $GOPATH/go.mod exists but should not 的錯誤;go mod init提示outside GOPATH;

2、專案檔案建立

在任意目錄(無需考慮GOPATH的)建立專案資料夾,並在該目錄下建立bin、pkg、src等三個子資料夾

將下載的專案程式碼拷貝至src原始碼資料夾,或自行建立相應的go檔案

在*.go程式的import()程式碼片段中將報紅的依賴項選中並點選go get...,執行下載安裝操作

淺談goland匯入自定義包時出錯(一招解決問題)

在./pkg/mod/github.com資料夾中能查獲新下載的第三方軟體包,但是import時仍然報錯,如下圖所示

淺談goland匯入自定義包時出錯(一招解決問題)

3、使用GoModules模式配置依賴項

在File->Setting->Go Modules設定項中,選中enable go modulse integration

淺談goland匯入自定義包時出錯(一招解決問題)

開啟GoLand的Terminal,在工程的根目錄路徑下輸入go mod init,以初始化專案並生成go.mod檔案,此時將會出現如下錯誤:

淺談goland匯入自定義包時出錯(一招解決問題)

上述報錯的原因是我們的專案檔案不遵循GOPATH路徑,因此需要使用go mod init 專案目錄名進行初始化:

淺談goland匯入自定義包時出錯(一招解決問題)

正常執行上述指令後,工程根目錄下將出現go.mod檔案

4、使用GoModules時出現的問題(需清除Project GOPATH配置)

在步驟2中成功建立了go.mod檔案,但隨之而來的是另外一個錯誤,如下圖所示:

淺談goland匯入自定義包時出錯(一招解決問題)

究其根本,原因是GOPATH與GoModules包管理模式不能並存,只能二選一,因此本例中選擇了GoModules模式,需要完善的操作如下圖所示:

淺談goland匯入自定義包時出錯(一招解決問題)

在設定中將Project GOPATH內的路徑配置清除,並使Global GOPATH保持為預設值,重新sync同步之後,即可成功匯入第三方包

5、匯入自定義包

在匯入自定義包時,若直接使用package對應的包名,則會報錯package xxx is not in GOROOT,如下圖所示:

淺談goland匯入自定義包時出錯(一招解決問題)

為此,則需以根目錄開始到包所在目錄的路徑格式進行匯入,示例如下:

淺談goland匯入自定義包時出錯(一招解決問題)

6、正常建立並匯入包後的目錄結構

包含bin pkg src,把程式碼存放或建立在src目錄下

在GoModule模式下,無需考慮專案資料夾是否在GOPATH中

淺談goland匯入自定義包時出錯(一招解決問題)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。