最简单,
database可行的现成解决方案是将您的包/模块放入VCS(例如github.com),因此其他包(在其他模块内部)可以通过导入来简单地引用它:
import "github.com/someone/database"
如果这样做,您甚至不必
go.mod手动摆弄文件,go工具将处理所有事情:它将自动识别并解决此依赖关系,下载并安装所需的软件包,并且还将
go.mod自动更新。
完全保留在本地磁盘上
如果您不想使用VCS(例如,您只是在试验,或者尚未决定使用什么),那么仍然可以使用。该 如何
在官方详细的我能完全工作外VCS在我的本地文件系统中:转到维基?
因此,您在
database之外创建了一个文件夹
GOPATH,并在其中创建了一个模块。然后,您创建了另一个模块,我们称之为
main,并且您想使用此
database包。
您必须做的是:
go.mod
您的main
模块必须将database
软件包列为“要求”。为您的database
包裹指定一个临时的VCS名称:require (example.com/me/database v0.0.0
)
您必须告诉go工具此软件包的位置,因为我们使用的完整软件包名称只是一个临时名称/幻想名称。使用
replace
指令使该database
程序包指向本地磁盘上的文件夹。您可以使用绝对路径和相对路径:replace example.com/me/database => ../database
就这样。
工作实例
让我们看一个可行的例子。让我们创建一个
pretty模块。创建一个
pretty包含2个文件的文件夹:
pretty.go:
package prettyimport "fmt"func Pretty(v ...interface{}) { fmt.Println(v...)}go.mod (可以通过运行来创建
go mod init pretty):
module pretty
现在让我们创建另一个主模块。让我们在文件夹
osinf旁边创建一个文件夹(可能是任何
pretty文件夹)。其中2个文件:
osinf.go (注意,我们打算使用我们的
pretty包/模块,我们通过导入
"example.com/me/pretty"):
package mainimport "example.com/me/pretty"func main() { pretty.Pretty("hi") pretty.Pretty([]int{1, 3, 5})}go.mod:
module mainrequire example.com/me/pretty v0.0.0replace example.com/me/pretty => ../pretty
就这样。
go run osinf.go在
osinf文件夹中运行,输出为:
hi[1 3 5]



