Golang中處理import自定義包出錯問題的解決辦法
could not import ......
方式1:使用GOPATH和GOROOT
命令行中輸入 go env 查看系統(tǒng)變量
GOROOT:就是Go的安裝目錄,(類似于java的JDK),里面有bin目錄
GOPATH:是我們的工作空間,保存go項目代碼和第三方依賴包
GOPATH可以設置多個,其中,第一個將會是默認的包目錄,使用go get下載的包都會在第一個path中的src目錄下,使用go install時,在哪個GOPATH中找到了這個包,就會在哪個GOPATH下的bin目錄生成可執(zhí)行文件
使用GOPATH時,Go會在以下為目錄中搜索包:
GOROOT/src:Go標準庫
GOPATH/src:應用自身代碼和第三方依賴的代碼
引入包時,路徑從src的下一級文件地址開始寫,編譯器會自動從src下開始引入
import ( "fmt" util "demo02/utils" )
發(fā)生錯誤
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來構建應用了,
Go使用GOMODULE來管理程序文件。
這里錯誤的原因也是我沒有在系統(tǒng)設置的目錄下書寫和保存代碼,導致文件根本找不到。
方式2:使用go.mod
首先指定系統(tǒng)變量GO111MODULE=on
在命令行中執(zhí)行:go env -w GO111MODULE=on
GO111MODULE有三個值:off, on和auto(默認值)
GO111MODULE=off,go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種通過vendor目錄或者GOPATH模式來查找。
GO111MODULE=on,go命令行會使用modules,而一點也不會去GOPATH目錄下查找。
GO111MODULE=auto,默認值,go命令行將會根據(jù)當前目錄來決定是否啟用module功能。這種情況下可以分為兩種情形:
1)當前目錄在GOPATH/src之外且該目錄包含go.mod文件
2)當前文件在包含go.mod文件的目錄下面。
步驟
1.進入項目路徑下執(zhí)行 go mod init + 模塊名
命令,在項目文件下創(chuàng)建一個go.mod文件
2.引入自定義包時,路徑應從go.mod所在的路徑下寫起
總結
到此這篇關于Golang中處理import自定義包出錯問題解決的文章就介紹到這了,更多相關Golang處理import自定義包出錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在 Golang 中實現(xiàn) Cache::remember 方法詳解
這篇文章主要介紹了在 Golang 中實現(xiàn) Cache::remember 方法詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03golang?channel多協(xié)程通信常用方法底層原理全面解析
channel?是?goroutine?與?goroutine?之間通信的重要橋梁,借助?channel,我們能很輕易的寫出一個多協(xié)程通信程序,今天,我們就來看看這個?channel?的常用用法以及底層原理2023-09-09解決Goland中利用HTTPClient發(fā)送請求超時返回EOF錯誤DEBUG
這篇文章主要介紹了解決Goland中利用HTTPClient發(fā)送請求超時返回EOF錯誤DEBUG,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12