软件系统定制开发golang导入本地自定义的包的方法与local import “./XXX“ in non-local package错误详解

文章目录


在编写go程序时,软件系统定制开发如果在导入包的时候想软件系统定制开发导入本地或相对路径下软件系统定制开发自定义的包,软件系统定制开发如果使用直接使用import "./mypackage"软件系统定制开发这种格式往往就会出现以下报错:

local import "./XXX" in non-local package
  • 1

在查询资料发现有人说以前的版本这样是可以的,不过反正现在(我的go版本为1.18.3)是不行的。解决的方法也很简单,只要按照一定的格式导入包就可以了,尽管是比较基础的内容,但对于像我一样的初学者,难免有疑惑,下面具体分析。


情况一:导入的包为标准库中的包

当导入的包为fmt或者os这类包含在标准库中的包时,可以直接通过以下方式导入:

//import "包名" ,例如:import "fmt"
  • 1
  • 2

情况二:导入的包为网络上的第三方包

当导入的包既不是标准包,也不是在本地自定义的包时,可以通过与情况一相似的格式直接调用。如这个教程中所示:

上面的例子需要设置好环境变量GOPROXY的值为https://goproxy.cn,不然在国内可能由于网络问题而出现错误。
因此,这种情况下,导入包的格式与情况一相同:

//import "网址/包名”,例如:import "golang.org/x/tour/pic"
  • 1
  • 2

情况三:导入的包为本地自定义的包

当导入的包属于本地自定义的包时,也分为两种情况进行说明:

  • 导入的包位于同一module下时:
    当需要导入包的源文件与该包属于同一个module(module的概念可以看我的前一篇,需要理解go mod的用法)时,可以通过import "模块名/包名"的方式导入:
    //import "模块名/包名",例如:import "moduleName/packageName"
    • 1
    • 2
    下面的图片举例更加直观:
  • 导入的包位于不同的module下时:
    当需要导入包的源文件与该包属于不同的module时,按照上面的方法就无法定位到正确的位置了,究其原因,是因为要导入一个包,就需要知道它所在的位置,对于本地自定义的包来说,也就是需要知道存放包的路径。现在的go版本不再支持在源文件中直接通过import相对路径的方法查找包了,因此就需要通过其它方式确定包所在的位置,而这种方法就是通过配置go.mod实现的。
    go.mod文件正是对某个module需要的依赖包进行管理的文件,里面配置的详细方法可以参照我的上一篇。这里给出具体的解决方式:
    1. 修改go.mod文件,添加以下内容:
      require packagename v0.0.0 //packagename为包的名称replace packagename => dir //dir修改为包所在的相对路径。如:“../dir”
      • 1
      • 2
    2. 在源文件中导入包:
      import "packagename"
      • 1
    下面的图片中的例子更加直观:

    这样,就完成了对自定义的本地包的导入。
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发