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