Golang中处理import自定义包出错问题的解决办法
could not import ......
方式1:使用GOPATH和GOROOT
命令行中输入 go env 查看系统变量
GOROOT:就是Go的安装目录,(类似于java的JDK),里面有bin目录
GOPATH:是我们的工作空间,保存go项目代码和第三方依赖包
GOPATH可以设置多个,其中,第一个将会是默认的包目录,使用go get下载的包都会在第一个path中的src目录下,使用go install时,在哪个GOPATH中找到了这个包,就会在哪个GOPATH下的bin目录生成可执行文件
使用GOPATH时,Go会在以下为目录中搜索包:
GOROOT/src:Go标准库
GOPATH/src:应用自身代码和第三方依赖的代码
引入包时,路径从src的下一级文件地址开始写,编译器会自动从src下开始引入
import ( "fmt" util "demo02/utils" )
发生错误
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版本之后,已经不再推荐使用GOPATH来构建应用了,
Go使用GOMODULE来管理程序文件。
这里错误的原因也是我没有在系统设置的目录下书写和保存代码,导致文件根本找不到。
方式2:使用go.mod
首先指定系统变量GO111MODULE=on
在命令行中执行:go env -w GO111MODULE=on
GO111MODULE有三个值:off, on和auto(默认值)
GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
1)当前目录在GOPATH/src之外且该目录包含go.mod文件
2)当前文件在包含go.mod文件的目录下面。
步骤
1.进入项目路径下执行 go mod init + 模块名
命令,在项目文件下创建一个go.mod文件
2.引入自定义包时,路径应从go.mod所在的路径下写起
总结
到此这篇关于Golang中处理import自定义包出错问题解决的文章就介绍到这了,更多相关Golang处理import自定义包出错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
最新评论