接触一门新的语言首先就要搭建环境,而新手在搭建的时候往往会遇到很多问题,看到网上的搭建教程各式各样往往不知道要按哪个搭建,真是太难了。
要完成环境的搭建首先还是要搞清楚搭建中的理论知识,知道这些环境变量为什么要配置,配置了会产生什么样的效果。下面我总结一下我搭建过程中遇到的问题,本文不会详细介绍搭建步骤,更偏重理论知识,如有错误欢迎指出,相互学习。
Go及Goland安装
Go安装及配置:
可参考:Go语言学习 之 Go环境搭建、环境变量释义及代码目录结构(一)
注意:
- 这里在用Goland配置GOPATH是时候如果打不开隐藏的usr目录可以利用搜索功能找到。
- 改完~/.bash_profile之后要记得source一下使其生效
- 如果在公司搭建往往还需要配置公司的proxy
Goland激活:适用于2020.1.3以下的版本
http://sigusoft.com/jets
GOPATH
代码库所在目录,即工作区。
工作区三个基础目录:src,bin,pkg
- src:主要存放 Go 的源码文件。
- bin:主要存放build可执行文件。在工程经过 go build、go install 或 go get 等指令后,会将产生的二进制可执行文件放在 $GOPATH/bin 目录下。
- pkg:存放编译后的目标文件, 主要是 *.a 文件。用于存放通过
go install
命令安装后的代码包的归档文件。前提是代码包中必需包含 Go 库源码文件。归档文件是指那些名称以 “.a” 结尾的文件。
如果需要将整个源码添加到版本管理工具(Version Control System,VCS)中时,只需要添加 $GOPATH/src 目录的源码即可。bin 和 pkg 目录的内容都可以由 src 目录生成。
我们需要将工作区的目录路径添加到环境变量 GOPATH 中。否则,即使处于同一工作区(事实上,未被加入 GOPATH 中的目录不用管成为工作区),代码之间也无法通过绝对代码包路径调用。
GOPATH建议根据项目设置,而不是设置全局变量。设置全局 GOPATH 的方法可能会导致当前项目错误引用了其他目录的 Go 源码文件从而造成编译输出错误的版本或编译报出一些无法理解的错误提示。
通过 go env
命令可以看到设置的所有环境参数值。
GOBOOT
GOROOT 的值是 Go 安装目录,还有其自带标准库的位置,用户一般不需要设置GOROOT,默认情况下Go语言安装工具会将其设置为安装的目录路径。(Mac一般安装于/usr/local/go)
目录 | 说明 |
---|---|
api | 用于存放依照 Go 版本顺序的 API 增量列表文件。这里所说的 API 包含公开的变量,常量,函数等 |
bin | 用于存放主要的标准命令文件,包括 go,godoc 和gofmt |
doc | 用于存放标准库的 HTML 格式的程序文档。我们可以通过 godoc 命令启动一个 Web 程序展现这些文档 |
lib | 用于存放一些特殊的库文件 |
misc | 用于存放一些辅助类的说明和工具 |
pkg | 用于存放安装 Go 标准库的所有归档文件 |
src | 用于存放 Go 本身,Go 标准工具以及标准库的所有源码文件 |
test | 存放用来测试和验证Go本身的所有相关文件 |
通过 go install
命令,Go 程序(这里是标准库中的程序)会被编译成平台相关的归档文件存放到其中。另外,“pkg/tool/linux_amd64”文件夹存放了使用 Go 制作软件时用到的很多强大的命令和工具。
源码文件分类
Go语言学习 之 Go环境搭建、环境变量释义及代码目录结构(一)
Go 源码文件有分 3 种,即命令源码文件,库源码文件和测试源码文件。不管是命令源文件还是库源文件,在同一个目录下的所有源文件,其所属包的名称必须一致的。
- 命令源码文件: 声明为属于 main 代码包,并且包含无参数声明和结果声明的 main 函数的源码文件。如果一个
Go
源文件被声明属于main
包,并且该文件中包含main
函数,则它就是命令源码文件。命令源文件属于程序的入口,可以通过Go
语言的go run
命令运行或者通过go build
命令生成可执行文件。 - 库源码文件: 库源文件则是指存在于某个包中的普通源文件,并且库源文件中不包含
main
函数。库源码文件声明的包名会与它实际所属的代码包(目录)名一致,且库源码文件中不包含无参数声明和无结果声明的 main 函数。 - 测试源码文件:这是一种Go特有的特殊库文件,可以通过执行
go test
命令运行当前代码包下的所有测试源码文件。成为测试源码文件的充分条件有两个:- 文件名需要以 ”_test.go” 结尾
- 文件中需要至少包含该一个名称为 Test 开头或 Benchmark 开头,拥有一个类型为 *testing.T 或 testing.B 的参数的函数。类型 testing.T 或 testing.B 是两个结构体类型。其中t参数用于报告测试失败和附加的日志信息
当在某个代码包中执行
go test
命令,该代码包中的所有测试源码文件就会被找到并运行。
常用命令解释
- build
用于编译指定的代码包或 Go 语言源码文件。命令源码文件会被编译成可执行文件,并存放到命令执行的目录或指定目录下。而库源码文件被编译后,则不会在非临时目录中留下任何文件。
- clean
用于清除因执行其他 go 命令而遗留下来的临时目录和文件。
- doc
用于显示打印 Go 语言代码包以及程序实体的文档。
- env
用于打印 Go 语言相关的环境信息。
- fix
用于修正指定代码的源码文件中包含的过时语法和代码调用。这使得我们在升级 Go 语言版本时,可以非常方便地同步升级程序。
- fmt
用于格式化指定代码包中的 Go 源码文件。实际上,它是通过执行
gofmt
命令来实现功能的。
- generate
用于识别指定代码中资源文件中的 “go:generate” 注释,并执行其携带的任意命令。该命令独立于 Go 语言标准的编译和安装体系。如果你有需要解析的 “go:generate” 注释,就单独运行它。这个命令非常有用,我常用它自动生成或改动 Go 源码文件。
- get
用于下载,编译并安装指定改动代码包及其依赖包。从我们自己的代码中转站或第三方代码库上自动拉取代码,就全靠它了。
- install
用于编译并安装指定的代码包及其依赖包。安装命令源码文件后,代码包所在的工作区目录的 bin 子目录,或者当前环境变量 GOBIN 指向的目录中会生成相应的可执行文件。安装源码文件后,会在代码包所在的工作目录的 pkg 子目录中生成相应的归档文件。
- list
用于显示指定代码包的信息,它可谓是代码包分析的一大便利工具。利用 Go 语言标准代码库代码包 “text/template” 中规定的模版语法,你可以非常灵活的控制输出信息。
- run
用于编译并运行指定的代码源码文件。当你想不生成可执行文件而直接运行命令源码文件时,就需要用到它。
- test
用于测试指定的代码包,前提是该代码包目录中必须存在测试源代码文件。
- tool
用于运行 Go 语言的特殊工具。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/goland/1529.html