Go Modules 功能简化了包管理,并允许你在无需 GOPATH 的情况下导入本地包。使用 Go Modules,可以更有效地组织项目及其依赖关系。
要使用 Go Modules 导入本地包,可以按照以下步骤进行操作。
步骤1:初始化新的 Go Modules
在项目的根目录中,使用以下命令初始化一个新的 Go 模块。
go mod init mymodule
此命令将在项目的根目录中创建一个 go.mod 文件。
# https://github.com/logeast/101/blob/main/go-local-module/go.mod
module mymodule
go 1.21.0
步骤2:创建子目录和包
你可以在项目内部为本地包创建一个子目录。
mkdir mypackage
将 mypackage 替换为你的本地包的所需名称。
然后可以在新的子目录中创建一个 .go 文件(例如 mypackage/hello.go),并定义该包及其函数。
// https://github.com/logeast/101/blob/main/go-local-module/mypackage/hello.go
package mypackage
func SayHello() string {
return "Hello,本地包!"
}
名为 mypackage 的本地包中包含一个 SayHello() 函数。
步骤3:导入本地包
要在同一模块的另一个文件中导入本地包,可以使用模块名称后跟包名称的方式。
import (
"mymodule/mypackage"
)
将 mymodule 替换为你初始化 Go 模块时使用的名称,并将 mypackage 替换为你的本地包的名称。
新建一个 main.go ,然后引用我们创建的包。以下是一个简单的示例:
// https://github.com/logeast/101/blob/main/go-local-module/main.go
package main
import (
"fmt"
"mymodule/mypackage"
)
func main() {
hello := mypackage.SayHello()
fmt.Println(hello)
}
在 main.go 中,我们使用模块名称 mymodule 后跟包名称 mypackage 导入了本地包。
最后整个项目的目录结构如下:
go-local-module
├── go.mod
├── main.go
└── mypackage
└── hello.go