问答

go 自定义包引入,报错包找不到的问题

作者:admin 2021-04-21 我要评论

go 初学者,在导入自定义包的时候遇到问题,在运行go build main.go 命令的时候报错包找不到,报错信息如下: E:\Code\goprojectgo build main.gobuild command-...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

详细描述如下:

目录结构:

image.png

在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也没报错。

###

首先,你这个写法不够规范,看一下你的go版本,从go1.11开始modules就开始支持了,现在都go1.16了,但是看你的代码,还在使用gopath的方式。

找到你的项目目录,执行 go mod init xxx,这个xxx你可以起一个你喜欢的名字,这个操作是给项目制定modules,xxx 是modules的root

然后,你需要修改import的方式,替换成 import xxx/learn1 这种形式。这是标准的go的URL导入方式。

你再编译执行试试看

###

你引用包的格式不够规范。
go引入包的路径是 相对于 环境变量GOPATH的 相对地址

例如
import github.com/gin-gonic/gin
实际上的地址是 $GOPATH/src/gihub.com/gin-gonic/gin 目录,

如果在项目根目录中有go.mod 文件,并且文件中定义了
module=test

那么test 后路径会被替换成当前目录。

获取GOPATH的命令 go env GOPATH

###

推荐 go mod init xxx xxx是项目的名称。
之后需要修改?import?的方式,替换成 import xxx/learn1 的形式。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • go 自定义包引入,报错包找不到的问题

    go 自定义包引入,报错包找不到的问题

  • document.getElementById返回null

    document.getElementById返回null

  • (文字转语音)如何能够实现语音播报完

    (文字转语音)如何能够实现语音播报完

  • vue-cli electron 怎样获得绝对路径?

    vue-cli electron 怎样获得绝对路径?

腾讯云代理商
海外云服务器