go常用命令

go常用命令

构建和安装的对象有两种:库源码文件和命令源码文件
构建和安装代码包的时候都会执行编译、打包等操作,并且这些操作生成的任何文件都会先被保存到某个临时的目录中

2.1.go run 程序测试

  • go run 运行程序进行测试

2.2.go build 程序构建

  • 如果构建的是库源码文件,那么操作后产生的结果文件只会存在于临时目录中,这里的构建的主要意义在于检查和验证
  • 如果构建的是命令源码文件,那么操作的结果文件会被搬运到源码文件所在的目录中
  • 默认不会编译目标代码包所依赖的那些代码包,如果被依赖的代码包的归档文件 pkg 不存在,或者源码文件有了变化,那它还是会被编译
go build -a       强制编译所有源代码,包括依赖包
go build -i       编译依赖的代码包并安装它们的归档文件
go build -x       调试模式
go build -n       测试构建,并不会整的执行构建编译操作
go build -v -a    查看构建编译的代码包名称
go build -o xxx   指定构建的命令文件名称

2.3.go install 程序安装

  • 命令说明:该安装操作会先执行构建,再进行链接,最后根据源码类型将结果文件存放到指定目录
1.对于库源码文件,结果文件会存放到 $GOPATH/pkg 目录下的对应子目录中
2.对于命令源码文件,结果文件会存放到 $GOPATH/bin 目录中,或者环境变量 $GOBIN 指向的目录中

2.4.go get 下载程序

  • go get 命令详解: https://github.com/hyper0x/go_command_tutorial/blob/master/0.3.md

  • 命令作用:下载安装公共仓库的目标代码包,并把它们安装到环境变量 GOPATH 包含的第 1 工作区的相应目录中

  • 如果存在环境变量 GOBIN ,那么仅包含命令源码文件的代码包会被安装到 GOBIN 指向的那个目录

go get -u           下载并安装代码包,不论工作区中是否已存在它们。
go get -d           只下载代码包,不安装代码包。
go get -fix         在下载代码包后先运行一个用于根据当前 Go 语言版本修正代码的工具,然后再安装代码包。
go get -t           同时下载测试所需的代码包。
go get -insecure    允许通过非安全的网络协议下载和安装代码包。HTTP 就是这样的协议。

拓展1-第三方工具

- Go 语言官方提供的 go get 命令是比较基础的,其中并没有提供依赖管理的功能。
- 目前 GitHub 上有很多提供这类功能的第三方工具,比如 glide、gb 以及官方出品的 dep、vgo 等等,它们在内部大都会直接使用 go get

拓展2-简化代码包导入路径

在需要变更存储源码的代码仓库或者代码包的相对路径时为了让代码包的远程导入路径不受此类变更的影响,可以使用自定义的代码包导入路径

方法是:在该代码包中的库源码文件的包声明语句的右边加入导入注释,如下
package semaphore // import "golang.org/x/sync/semaphore"

# 这个代码包原本的完整导入路径是 github.com/golang/sync/semaphore 这与实际存储它的网络地址对应的
# 该代码包的源码实际存在 GitHub 网站的 golang 组的 sync 代码仓库的 semaphore 目录下
# 而加入导入注释之后,用以下命令即可下载并安装该代码包
go get -u golang.org/x/sync/semaphore

# golang.org 下的路径 /x/sync/semaphore 并不是存放 semaphore 包的真实地址。我们称之为代码包的自定义导入路径。