go語(yǔ)言import報(bào)錯(cuò)處理圖文詳解
import 認(rèn)識(shí)
go的import有兩種形式
第一種是GOPATH下項(xiàng)目文件管理
第二種是Go Modules
初學(xué)狀態(tài)我用的vscode.在兩個(gè)文件夾中調(diào)用全局變量。
在地址引用時(shí)出現(xiàn)錯(cuò)誤。
通過(guò)查詢知道了兩種方法之間的區(qū)別就在與GO111MODULE的設(shè)置問(wèn)題。
若是用第一種方法就把變量值設(shè)置為off或者auto。

若是用第二種方法就把變量值值設(shè)置為on。
然后就會(huì)看到import引用的地址爆紅。

運(yùn)行顯示
project01\main\demo6\main\main.go:6:2: package go_code/project01/main/demo6/model1 is not in GOROOT (E:\go\src\go_code\project01\main\demo6\model1)

出現(xiàn)這種情況就是使用了Go Modules方式。需要在使用的工作空間設(shè)置一個(gè)go.mod的文件。

在終端中輸入go mod init 模塊名
go mod tidy
如果用auto模式,那就是讓系統(tǒng)自己選擇是那種方式。把項(xiàng)目移動(dòng)到$GOPATH/src外
進(jìn)入目錄,運(yùn)行 go mod init + 模塊名稱
go build 或者 go run 一次。
初學(xué)者,要想解決爆紅問(wèn)題,直接在環(huán)境變量中吧on或者auto改為off就可以了。
補(bǔ)充:Go語(yǔ)言不支持相對(duì)路徑import導(dǎo)入包
Go是一門(mén)非常簡(jiǎn)潔,且工程化完備的現(xiàn)代化開(kāi)發(fā)語(yǔ)言。但在 go mod 模塊開(kāi)發(fā)時(shí),不像python那樣,import不支持相對(duì)路徑導(dǎo)入。本地包必須使用全路徑。本文嘗試探索此問(wèn)題。
問(wèn)題的產(chǎn)生
在github上fork一個(gè)開(kāi)源項(xiàng)目之后,想要修改部分代碼后供公司項(xiàng)目使用。發(fā)現(xiàn)需要修改源項(xiàng)目中的所有內(nèi)部import,例如開(kāi)源模塊 M中存在P1、P2等package, 其中P2 import P1的import路徑為 “github.com/someone/M/P1”,而我fork的分支里則是需要import 自己修改后的 "github.com/myself/M/P1",與此類似,整個(gè)開(kāi)源項(xiàng)目里很多這種地方都需要修改。
所以引出了對(duì)相對(duì)路徑導(dǎo)入的思考,有沒(méi)有什么辦法支持相對(duì)路徑的導(dǎo)入而方便fork之后的差異開(kāi)發(fā)呢?
原因
從以下幾個(gè)問(wèn)題可以看出,對(duì)于Go語(yǔ)言來(lái)說(shuō),包相對(duì)路徑的引入,并不是一個(gè)好的方案:
- 會(huì)與官方標(biāo)準(zhǔn)包的導(dǎo)入相混淆
- 增加相對(duì)導(dǎo)入包的軟件管理難度
- 影響了
go get命令的使用 - 不方便自動(dòng)生成Go開(kāi)發(fā)標(biāo)準(zhǔn)文檔
相對(duì)路徑導(dǎo)包示例:
import(
"./package1"
"./package2"
"./package3"
)在 go mod 開(kāi)發(fā)模式下,相對(duì)路徑的導(dǎo)包方式不支持。會(huì)報(bào)錯(cuò)誤:local import "./package1" in non-local package
相對(duì)路徑導(dǎo)入本地包,會(huì)在 GOPATH 的軟件包目錄中搜索導(dǎo)入。而不是在本項(xiàng)目中導(dǎo)入。
總結(jié)
到此這篇關(guān)于go語(yǔ)言import報(bào)錯(cuò)處理的文章就介紹到這了,更多相關(guān)go語(yǔ)言import報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語(yǔ)言生成UUID的利器(github.com/google/uuid)
UUID是確保每個(gè)元素唯一性的重要工具,Go語(yǔ)言雖然在標(biāo)準(zhǔn)庫(kù)中沒(méi)有直接提供UUID生成功能,但可以通過(guò)安裝github.com/google/uuid庫(kù)來(lái)實(shí)現(xiàn),本文就來(lái)介紹一下,感興趣的可以了解一下2024-11-11

