我使用此命令"go mod init database"在"database"文件夹中的"GOPATH"之外创建了一个库作为个人使用的模块,我不知道:
操作系统:Windows 7,Go:v1.11
icz*_*cza 41
最简单和开箱即用的解决方案是将您的database包/模块放入VCS(例如github.com),因此其他包(在其他模块内)可以通过导入它来简单地引用它:
import "github.com/someone/database"
Run Code Online (Sandbox Code Playgroud)
如果你这样做,你甚至不必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
)
Run Code Online (Sandbox Code Playgroud)您必须告诉go工具该软件包所在的位置,因为我们使用的完整软件包名称只是一个临时/幻想名称.使用该replace指令使此database包指向本地磁盘上的文件夹; 你可以使用绝对和相对路径:
replace example.com/me/database => ../database
Run Code Online (Sandbox Code Playgroud)就这样.
让我们看一个有效的例子.我们来创建一个pretty模块.创建一个pretty包含2个文件的文件夹:
pretty.go:
package pretty
import "fmt"
func Pretty(v ...interface{}) {
fmt.Println(v...)
}
Run Code Online (Sandbox Code Playgroud)
go.mod(可以通过运行创建go mod init pretty):
module pretty
Run Code Online (Sandbox Code Playgroud)
现在让我们创建另一个主模块.让我们在文件夹osinf旁边创建一个文件夹(可能是任何pretty文件夹).其中2个文件:
osinf.go(注意我们打算使用我们的pretty包/模块,我们将其导入"example.com/me/pretty"):
package main
import "example.com/me/pretty"
func main() {
pretty.Pretty("hi")
pretty.Pretty([]int{1, 3, 5})
}
Run Code Online (Sandbox Code Playgroud)
go.mod:
module main
require example.com/me/pretty v0.0.0
replace example.com/me/pretty => ../pretty
Run Code Online (Sandbox Code Playgroud)
就这样.
go run osinf.go在osinf文件夹中运行,输出为:
hi
[1 3 5]
Run Code Online (Sandbox Code Playgroud)