> 文章列表 > Go 工程化

Go 工程化

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的包名称.函数

示例

包的别名