go 自定义包引入,报错包找不到的问题
go 初学者,在导入自定义包的时候遇到问题,在运行go build main.go 命令的时候报错包找不到,报错信息如下:
E:\Code\goproject>go build main.go
build command-line-arguments: cannot find module for path _/E_/Code/goproject/learn1
详细描述如下:
目录结构:
在main.go文件中想使用learn1、show2文件中定义的包,引入方式如上面的截图中的内容:
import (
"fmt"
"./learn1"
"./show2"
)
learn1和 show2中的文件内容:
learn1
package learn1
import "fmt"
func init() {
fmt.Print("learn1n")
}
func Learn1() {
}
show2
package show2
import "fmt"
func init() {
fmt.Print("show2n")
}
func Show2() {
}
请问我这样引入的问题在哪里呢?在网上查也是可以这样相对路径的引入方式,IDE也没报错。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先,你这个写法不够规范,看一下你的go版本,从go1.11开始modules就开始支持了,现在都go1.16了,但是看你的代码,还在使用gopath的方式。
找到你的项目目录,执行 go mod init xxx,这个xxx你可以起一个你喜欢的名字,这个操作是给项目制定modules,xxx 是modules的root
然后,你需要修改import的方式,替换成 import xxx/learn1 这种形式。这是标准的go的URL导入方式。
你再编译执行试试看
推荐
go mod init xxx
xxx是项目的名称。之后需要修改 import 的方式,替换成
import xxx/learn1
的形式。你引用包的格式不够规范。
go引入包的路径是 相对于 环境变量GOPATH的 相对地址
例如
import github.com/gin-gonic/gin
实际上的地址是 $GOPATH/src/gihub.com/gin-gonic/gin 目录,
如果在项目根目录中有go.mod 文件,并且文件中定义了
module=test
那么
test
后路径会被替换成当前目录。获取GOPATH的命令
go env GOPATH
。