https://blog.csdn.net/weixin_44676081/article/details/107279746
GO111MODULE=“off”
在GO111MODULE="off"的條件下,並且寫的代碼不在$GOPATH/src下,也就是說下面的main.go不在$GOPATH/src目錄下面,同時我想要使用另一個module里面的內容,並且這個module不是標准庫,或者說不在GOROOT里(一般我們不會修改GOROOT中的內容)
運行代碼會報錯
main.go:4:2: cannot find package "module" in any of:
/usr/local/go/src/module (from $GOROOT)
/home/linux/go/src/module (from $GOPATH)
1
2
3
解決方案
設置GOPATH
go env -w GOPATH=~/test
# 這里設置為 ~/test是因為我需要在~/test/src下面寫代碼
1
2
然后在$GOPATH/src目錄下寫
go的編譯器會在$GOPATH/src下面尋找對應的模塊,src下的每一個目錄都可以對應一個模塊,目錄中的目錄也可以是一個模塊,如果,我們需要訪問一個目錄中的目錄中的模塊,比如下圖
我們需要調用module中的moduleA模塊,只需要使用
import "module/moduleA"
1
GO111MODULE=“on”
在GO111MODULE="on"的條件下,我們直接調用寫好的模塊,如下圖所示
會直接報錯
main.go:4:2: package module is not in GOROOT (/usr/local/go/src/module)
1
解決方案
第一種方式:設置GO111MODULE="off",然后像上面的那種方式一樣設置GOPATH
第二種方式:使用go mod,如下
首先我們需要初始化一個go.mod,使用
go mod init test
# test可以是任意的名稱
1
2
然后我們引入模塊的時候,以test(初始化時定義)開頭,然后接模塊路徑,比如
import "test/module"
1
如果使用這種方式Goland報錯,但是可以進行正常編譯,那么可以刪除當前目錄下的.idea目錄然后重啟項目即可
如果我們想要引用嵌套模塊也是一樣的
import "test/module/moduleA"
1
————————————————
版權聲明:本文為CSDN博主「、Edgar」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_44676081/article/details/107279746