package  mypackage   import “fmt"   func 新(){   ,fmt.Println (“mypackage.New")   }

我们现在分两种情况讨论:

<强>在同一个项目下

注意:在一个项目(项目)下我们是可以定义多个包(包)的。

<强>目录结构

现在的情况是,我们在,moduledemo/主要。去中调用了,mypackage这个包。

moduledemo   ├──go.mod   ├──main.go   └──mypackage   └才能──,mypackage.go

<>强导入包

这个时候,我们需要在,moduledemo/走。mod中按如下定义:

模块moduledemo

1.14去

然后在,moduledemo/主要。去中按如下方式导入,mypackage

package 主要   import  (   ,“fmt"   ,“moduledemo/mypackage"//,导入同一项目下的mypackage包   )   func  main (), {   ,mypackage.New ()   ,fmt.Println (“main")   }

<>强举个例子

举一反三,假设我们现在有文件目录结构如下:

└──泡沫
,,,├──刀
,,,│,,└──mysql.go
,,,├──go.mod
,,,└──main.go

其中,泡沫/走。国防部内容如下:

module github.com/q1mi/bubble      go  1.14

泡沫/刀/mysql。去内容如下:

package 刀   import “fmt"   func 新(){   ,fmt.Println (“mypackage.New")   }

泡沫/主要。去内容如下:

package 主要      import  (   ,“fmt"   ,“;github.com/q1mi/bubble/dao"   )   func  main (), {   ,dao.New ()   ,fmt.Println (“main")   }

不在同一个项目下

<强>目录结构

├──moduledemo
│,,├──go.mod
│,,└──主要。去
└──mypackage
,,,├──go.mod
,,,└──mypackage.go

<>强导入包

这个时候,,mypackage也需要进行模块初始化,即拥有一个属于自己的,走了。国防部文件,内容如下:

模块mypackage

1.14去

然后我们在,moduledemo/主要。去中按如下方式导入:

import  (   ,“fmt"   ,“mypackage"   )   func  main (), {   ,mypackage.New ()   ,fmt.Println (“main")   }

因为这两个包不在同一个项目路径下,你想要导入本地包,并且这些包也没有发布到远程的github或其他代码仓库地址。这个时候我们就需要在,走了。国防部文件中使用,取代指令。

在调用方也就是,packagedemo/走。mod中按如下方式指定使用相对路径来寻找,mypackage这个包。

module  moduledemo   1.14 go    require “mypackage" v0.0.0   replace “mypackage",=祝辞,“. ./mypackage"

<强>举个例子

最后我们再举个例子巩固下上面的内容。

我们现在有文件目录结构如下:

├──p1
│,,├──go.mod
│,,└──主要。去
└──p2
,,,├──go.mod
,,,└──p2.go

p1/主要。去中想要导入,p2。去中定义的函数。

p2/走。国防部内容如下:

模块liwenzhou.com/q1mi/p2

1.14去

p1/主要。去中按如下方式导入

import  (   ,“fmt"   ,“;liwenzhou.com/q1mi/p2"   )   func  main (), {   ,p2.New ()   ,fmt.Println (“main")   }

因为我并没有把安康;liwenzhou.com/q1mi/p2这个包上传到,liwenzhou.com这个网站,我们只是想导入本地的包,这个时候就需要用到,替换这个指令了。

p1/走。国防部内容如下:

模块github.com/q1mi/p1
1.14
需要“;liwenzhou.com/q1mi/p2"v0.0.0
取代“;liwenzhou.com/q1mi/p2"=比;“. ./p2"