Golang中處理import自定義包出錯(cuò)問(wèn)題的解決辦法
could not import ......
方式1:使用GOPATH和GOROOT
命令行中輸入 go env 查看系統(tǒng)變量

GOROOT:就是Go的安裝目錄,(類(lèi)似于java的JDK),里面有bin目錄
GOPATH:是我們的工作空間,保存go項(xiàng)目代碼和第三方依賴(lài)包
GOPATH可以設(shè)置多個(gè),其中,第一個(gè)將會(huì)是默認(rèn)的包目錄,使用go get下載的包都會(huì)在第一個(gè)path中的src目錄下,使用go install時(shí),在哪個(gè)GOPATH中找到了這個(gè)包,就會(huì)在哪個(gè)GOPATH下的bin目錄生成可執(zhí)行文件
使用GOPATH時(shí),Go會(huì)在以下為目錄中搜索包:
GOROOT/src:Go標(biāo)準(zhǔn)庫(kù)
GOPATH/src:應(yīng)用自身代碼和第三方依賴(lài)的代碼
引入包時(shí),路徑從src的下一級(jí)文件地址開(kāi)始寫(xiě),編譯器會(huì)自動(dòng)從src下開(kāi)始引入
import ( "fmt" util "demo02/utils" )
發(fā)生錯(cuò)誤
PS D:\Study\VScode\Goworkspace\src\Learning\chapter06\demo02\main> go run main.go
main.go:4:2: cannot find package "demo02/utils" in any of:
D:\Program\lang\Golang\src\demo02\utils (from $GOROOT)
C:\Users\Stafen\go\src\demo02\utils (from $GOPATH)
從Go1.11版本之后,已經(jīng)不再推薦使用GOPATH來(lái)構(gòu)建應(yīng)用了,
Go使用GOMODULE來(lái)管理程序文件。
這里錯(cuò)誤的原因也是我沒(méi)有在系統(tǒng)設(shè)置的目錄下書(shū)寫(xiě)和保存代碼,導(dǎo)致文件根本找不到。
方式2:使用go.mod
首先指定系統(tǒng)變量GO111MODULE=on
在命令行中執(zhí)行:go env -w GO111MODULE=on
GO111MODULE有三個(gè)值:off, on和auto(默認(rèn)值)
GO111MODULE=off,go命令行將不會(huì)支持module功能,尋找依賴(lài)包的方式將會(huì)沿用舊版本那種通過(guò)vendor目錄或者GOPATH模式來(lái)查找。
GO111MODULE=on,go命令行會(huì)使用modules,而一點(diǎn)也不會(huì)去GOPATH目錄下查找。
GO111MODULE=auto,默認(rèn)值,go命令行將會(huì)根據(jù)當(dāng)前目錄來(lái)決定是否啟用module功能。這種情況下可以分為兩種情形:
1)當(dāng)前目錄在GOPATH/src之外且該目錄包含go.mod文件
2)當(dāng)前文件在包含go.mod文件的目錄下面。
步驟
1.進(jìn)入項(xiàng)目路徑下執(zhí)行 go mod init + 模塊名 命令,在項(xiàng)目文件下創(chuàng)建一個(gè)go.mod文件
2.引入自定義包時(shí),路徑應(yīng)從go.mod所在的路徑下寫(xiě)起
總結(jié)
到此這篇關(guān)于Golang中處理import自定義包出錯(cuò)問(wèn)題解決的文章就介紹到這了,更多相關(guān)Golang處理import自定義包出錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang的os標(biāo)準(zhǔn)庫(kù)中常用函數(shù)的整理介紹
這篇文章主要介紹了Go語(yǔ)言的os標(biāo)準(zhǔn)庫(kù)中常用函數(shù),主要用來(lái)實(shí)現(xiàn)與操作系統(tǒng)的交互功能,需要的朋友可以參考下2015-10-10
go語(yǔ)言實(shí)現(xiàn)十大常見(jiàn)的排序算法示例
這篇文章主要為大家介紹了go語(yǔ)言實(shí)現(xiàn)十大常見(jiàn)的排序算法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
在 Golang 中實(shí)現(xiàn) Cache::remember 方法詳解
這篇文章主要介紹了在 Golang 中實(shí)現(xiàn) Cache::remember 方法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Go語(yǔ)言中validation庫(kù)不能校驗(yàn)零值問(wèn)題的解決方法
在使用 Gin 框架的時(shí)候,前后端傳遞數(shù)據(jù)的時(shí)候,比如使用 JSON 格式,通常會(huì)使用 ShouldBindJSON 去用結(jié)構(gòu)體打 tag 綁定前端傳來(lái)的 JSON 格式數(shù)據(jù),本文給大家介紹了Go語(yǔ)言中validation庫(kù)不能校驗(yàn)零值問(wèn)題的解決方法,需要的朋友可以參考下2024-08-08
golang?channel多協(xié)程通信常用方法底層原理全面解析
channel?是?goroutine?與?goroutine?之間通信的重要橋梁,借助?channel,我們能很輕易的寫(xiě)出一個(gè)多協(xié)程通信程序,今天,我們就來(lái)看看這個(gè)?channel?的常用用法以及底層原理2023-09-09
Go html/template 模板的使用實(shí)例詳解
這篇文章主要介紹了Go html/template 模板的使用實(shí)例詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
解決Goland中利用HTTPClient發(fā)送請(qǐng)求超時(shí)返回EOF錯(cuò)誤DEBUG
這篇文章主要介紹了解決Goland中利用HTTPClient發(fā)送請(qǐng)求超時(shí)返回EOF錯(cuò)誤DEBUG,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
詳解Go語(yǔ)言中關(guān)于包導(dǎo)入必學(xué)的 8 個(gè)知識(shí)點(diǎn)
這篇文章主要介紹了詳解Go語(yǔ)言中關(guān)于包導(dǎo)入必學(xué)的 8 個(gè)知識(shí)點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

