Go语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案。Go语言中为我们提供了很多内置包,如 fmt、os、io 等。
模块,则是 go 包的集合。在模块的根目录,需要有一个go.mod
文件来表明,这是一个模块。
包
由一个或多个源文件构成。这些源文件一起声明了属于该包的常量、类型、变量和函数,并且可以在同一包的所有文件中访问。同时这些元素可以导出,并在另一个包中使用(引用)。
Go 程序,就是通过调用各个模块中的包,在一个文件中,去完成一个更复杂的产品场景或功能。
GOPATH
是指工作区根目录的变量,可以通过go env
进行查看,修改可以看【教程 02】,它包含以下文件夹:
src
:包含按层次结构组织的 Go 源代码(需要我们自己手动创建)。pkg
:存储编译后生成的包文件 (自动生成)。bin
:包含已编译的二进制文件和可执行文件(自动生成)。使用go mod init
可以命令创建一个新模块,该命令创建一个新模块并初始化go.mod描述它的文件
首先我们按照目录要求,在 src
中创建一个文件夹
shell// modA 为该模块的名称 go mod init modA
这时,会在当前目录下创建一个go.mod
文件,表示该目录是一个模块
在 go.mod 中,可以对模块做个基本配置
go// 模块名
module modA
// go 语言版本
go 1.19
// 依赖的其他模块
require (
...
)
安装、编写一定要写在 GOPATH 下
我们可以使用 go install
添加一个依赖
go install 的编译过程有如下规律:
shell// 安装一个 github 上存储的包 go install github.com/rs/zerolog
相关信息
go install 只是将编译的中间文件放在 GOPATH 的 pkg 目录下,以及固定地将编译结果放在 GOPATH 的 bin 目录下
这时会自动添加至 go.mod
的 requeire
中
同时生成一个 go.sum
的文件。此文件包含新模块内容的预期哈希值。
我们可以使用 go list
列出当前模块所有依赖项
shellgo list -m all
我们可以使用go mod tidy
命令简单地删除,模块中没有使用的包。同时整理直接引用和间接引用的包。
go// 模块根目录下创建 main.go
package main
import "github.com/rs/zerolog/log"
func main() {
log.Info().Msg("Hello")
}
shell// 该命令会删除所有依赖,相应修改 go.mod 和 go.sum 文件内容 go mod tidy
go 中可以使用go mod vender
,将第三方包的文件复制到模块目录中,可以视为虚拟环境
venvgo mod vender
本文作者:Silon汐冷
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!