Go Project
Go 作为自带项目管理的编程语言,及其方便。
目录结构
通常, 一个Go语言项目 ( 假设这个项目的根目录是 GoProjectRoot )的目录是这样的 :
一级目录
GoProjectRoot/src #包含项目的源代码文件;
GoProjectRoot/pkg #包含编译后生成的包/库文件;
GoProjectRoot/bin #包含编译后生成的可执行文件。
其中src目录需要我们自己创建, 其余的两个目录都是在执行 go install
的时候自动生产的。
二级目录
在src目录下面的, 是我们本项目的全部源码, 一般按照不同的模块分别放置 :
<GoProjectRoot>
|--<src>
|--<module1>
|--mudule1.go
|--<module2>
|--module2.go
|--<main>
|--main.go
编译执行
GOPATH & GOROOT
不同于Makefile 或者 Cmake , 我们可以在任意的路径执行我们的 go install 命令, 这就需要Go编译器知道去哪里查找需要的包。 这个过程依赖的是GOPATH
和 GOROOT
连个变量。
由于有些命令会默认在GOPATH
第一个目录下执行,所以如果有多个下面项目的话,最好独立设置一个公共的目录作为第一目录。并不添加任何自己的项目代码,仅仅作为三方包目录。
Go先是从
GOROOT中查找包,如果没找到就从
GOPATH```中查找,结果都没有找到,我们可以使用go env输出Go的环境变量设置。
go run
含义
执行这个go文件。 听上去像是执行一个脚本, 用着也几乎和执行脚本一样。 但是、、、 Go语言是编译语言!!! 这个命令一定是编译生产临时执行文件,执行临时执行文件,删除临时执行文件 。
命令格式 :
go run xxx.go
作用 :
- 执行这个xxx.go , 打印输出 。
go get xxx
检测目标包是否存在, 如果不存在,下载到 GOPATH
第一个目录下。
go build
含义
编译这个Go文件。 如果没有参数,则在当前目录下查找main
命令格式 :
go build xxx.go go build -o NameYouNeed xxx.go
作用
在当前目录生产执行文件, 如果没有-o 参数 ,则可执行文件同.go后缀之前的名字的同名。
go install
含义
编译生产安装整个模块。
命令格式
go install xxx 注意 : xxx 是我们的模块的名字。 ####作用
- 如果这个模块的packet是main, 那么生产可执行文件。 放置在一级目录 bin下 , 名字同模块名字同名。
- 如果这个模块不是main模块,那么编译生产xxx.a文件 。放置在一级目录pkt下。
- 所有模块依赖的本项目模块都会被编译成对应的.a文件。放置在一级目录pkt下。
优势 :
go install 可以在任意路径执行。
go clean
清楚当前项目的各种目标文件
go list
go test
执行对应项目的测试代码