Go 工程化
创建项目
cd 到一个文件夹中做为项目的文件夹。使用 go mod init 命令创建项目,创建完成会在目录下生成 go.mod 文件
语法
go mod init 模块名称
go mod init testProject
go.mod 文件中的内容如下:
包查找规则
依次从:当前项目目录->$GOROOT->$GOPATH 下寻找依赖包
从当前 .go 文件所在的目录逐级向上查找 go.mod 文件
go 标准库提供的包在 $GOROOT/src 目录下
第三方依赖包在 $GOPATH/pkg/mod 目录下
go mod tidy
go mod tidy的作用是把项目所需要的依赖添加到go.mod文件中,并删除go.mod中没有被项目使用的依赖。下载的依赖源码存放在
$GOPATH/pkg/mod目录下。
go get 和 go install
go get
go get 将其指定的依赖包进行构建安装到go.mod,并将源代码下载到模块缓存中。在使用 go get 命令前,需要安装与远程包匹配的代码管理工具,如 Git、SVN、HG 等。所以为了 go get 命令能正常工作,你必须确保安装了合适的源码管理工具,参数中需要提供一个包名。
语法
go get [-t] [-u] [-v] [build flags] [packages]
示例1 将包添加到项目,或者升级到最新版本
go get 包名
示例2 将包升级或降级到特定版本
go get 包名@v1.2.3 // v1.2.3 表示某一个版本号
示例3 要删除对模块的依赖项并降级需要它的模块
go get 包名@none
参数 | 说明 |
---|---|
-t | 同时下载包中的测试所需包 |
-u | 同时更新包所需的依赖包 |
-v | 显示执行的命令 |
go install
在早期版本的Go中,“go-get”用于构建和安装软件包。现在,“go-get”专门用于下载go.mod中的依赖项。“go-install”可以用于生成和安装命令。指定版本后 “go install”将以模块感知模式运行,并忽略当前目录中的go.mod文件。"go install" 生成的文件在$GOPATH/bin目录下。
示例 安装依赖包的二进制文件
go install 包名@v1.2.3
go build
go build 命令主要用于编译代码。在包的编译过程中,会同时编译与之相关联的包。编译包时,build会忽略以“_test.go”结尾的文件。
语法
go build [-o output] [build flags] [packages]
参数 | 说明 |
---|---|
-o | 强制build将生成的可执行文件或对象写入指定的输出文件或目录。 |
-v | 编译时显示包名 |
-p n | 开启并发编译,默认情况下该值为 CPU 逻辑核数 |
-a | 强制重新构建 |
-n | 打印编译时会用到的所有命令,但不真正执行 |
-x | 打印编译时会用到的所有命令 |
包引入规则
项目中,a目录下的a.go文件 要 使用b目录下b.go文件中的Add的函数。a中要引入b,引入规则如下:
import "module名称/b目录名称/"
使用规则如下:
b的包名称.函数
示例
包的别名