Go 1.11 中引入的 Go 模块引入了从非 GOPATH 目录引用模块和包的变化。
旧方式
传统上,Go 模块需要驻留在 GOPATH 中。可以使用以下语法导入此目录中的模块和包:
import ( "github.com/username/modulename/subpackage" )
新方式
使用 Go 模块,这种方法已经改变。包现在可以驻留在 GOPATH 之外。要从另一个目录引用包:
使用 go mod init 命令初始化新模块:
go mod init github.com/username/modulename
这会创建 go.mod 和 go当前目录中的 .sum 文件。
使用 import引用其他目录中的包的语句。例如,如果 Module2 位于 /root/module2,并且包含名为 module2 的包,则 Module1 中的 import 语句将为:
import ( "github.com/username/module2" )
假设以下文件结构:
\root └── module1 ├── go.mod └── main.go └── module2 ├── go.mod └── module2.go
模块1:
module github.com/username/module1 require ( github.com/username/module2 v0.0.1 )
模块2:
module github.com/username/module2 go 1.13
package main import ( "fmt" "github.com/username/module2" ) func main() { fmt.Println(module2.Name()) }
package module2 import "fmt" func Name() string { return "Module 2" }
按照以下步骤,您可以引用非 GOPATH 目录中的模块,从而实现 Go 项目中代码的复用和模块化。
以上是如何从 GOPATH 外部引用 Go 模块?的详细内容。更多信息请关注PHP中文网其他相关文章!