go中import包的大坑解決方案
最近開始使用Go/GoLand 在import 自定義包時出現各種狀況,措手不及,大概在網上找瞭解決方法,幾乎沒說的清楚的(可能是我個人理解力比較差哈哈)
個人喜好加上網上其他人給的解決方法實在是那個啥,所以 圖文方式解決問題 才能事半功倍。
windows環境下裝的Goland,Mac及其他linux系統參考,瞭解到本質後 萬變不離其宗。
方案一:使用GOROOT和GOPATH
(以我本機為準舉例講講各種方法)
- GOROOT:就是Go的安裝目錄(C:\Go),(類似於java的JDK),裡面有bin目錄(C:\Go\bin)
- GOPATH: 是我們的工作空間,保存go項目代碼和第三方依賴包 (F:\Go)
- GOPATH可以設置多個,其中,第一個將會是默認的包目錄,使用go get下載的包都會在第一個path中的src目錄 下,使用go install時,在哪個GOPATH中找到瞭這個包,就會在哪個GOPATH下的bin目錄生成可執行文件
使用GOPATH時,Go會在以下為目錄中搜索包:
- GOROOT/src:Go標準庫
- GOPATH/src:應用自身代碼和第三方依賴的代碼
該方法對目錄架構要求比較嚴格 例如我的 F:\Go\src\awesomeProject1, 即必須創建在 GOPATH/src
註意說明:sum1包內的函數要大寫,這種方式是嚴格按照 GOROOT和GOPATH的方式,例如main包import "awesomeProject1/sum1"
包就會在 $GOPATH/src(Go/src/awesomeProject1/sum1)路徑下找到。
方案二:使用go.mod
通常大傢不喜歡將代碼放在 $GOPATH/src 下面,此時import pkg 時,就要用到go.mod
從Go1.11版本之後,已經不再推薦使用GOPATH來構建應用瞭。也就是說GOPATH被認為時廢棄的垃圾的做法。
當你開啟瞭GO111MODULE=on,仍然使用GOPATH模式的方法,在引入自定義模塊時會報錯。
用Go modules創建出來的工程中會包含一個go.mod的文件,工程的位置/路徑隨便
1. 設置環境變量 go env -w GO111MODULE=on
2. 打上這個小 對勾。
3. 執行 go mod init <module name> 。 <module name>非必填,不填的話就會采用項目文件的名稱。
到此這篇關於go中import包的大坑解決方案的文章就介紹到這瞭,更多相關go import包坑內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- go語言中GOPATH GOROOT的作用和設置方式
- GO項目配置與使用的方法步驟
- goland使用go mod模式的步驟詳解
- 一起來用GoLand開發第一個Go程序
- GoLand安裝與環境配置的完整步驟