常用的Go工具命令

Go附带了一下有用的命令,这些命令可以简化开发的过程。命令通常包含的IDE中,从而使工具在整个开发环境中保持一致。

go run 命令

go run命令实在开发过程中执行的最常见的命令之一,该命令将编译并执行main包(即程序的入口点)。

例如,在Go工作目录中创建main.go,将一下代码保存到main.go中。

package main
import "fmt" func main() {
//这是一个注释
fmt.Println("Hello World!! By Go")
}

在终端下执行go run main.go。会在命令行上打印 Hello World!! By Go

go build命令

go run编译并执行了我们编写的代码,但是未生成独立的二进制文件。所以这里go build就有了用武之地。

go build命令将编译我们的应用程序,包括我所有的包及其依赖项,而无需安装。这个命令会在从磁盘上生成编译后的二进制文件,但是不会执行这个文件。生成的文件遵循合理的命名约定,但是可以通过-o output命令选项更改即将创建二进制文件的名称。

对于上一个示例,在终端输入go build main.go,将会在你的目录下创建一个mian.exe的可执行文件。运行该mian.exe同样会在终端上打印Hello World!! By Go

默认情况下,生成的二进制文件包含调试信息和字符表。这会使文件变大。为减小文件所占用的空间,可以在构建过程中使用一下选项,从而从二进制文件中剥离那些信息。例如go build -ldflags "-w -s"可以使文件大小减少30%左右。

交叉编译

go build命令非常适合在当前系统或相同架构下运行二进制文件,同时Go提供了交叉编译(cross-compiling)来创建在不同架构上的二进制文件。

要进行交叉编译,需要设置好约束限制。就是将有关要为其编译代码的操作系统和系统架构的信息传递给build的一种方法。这些约束包括GOOS(用于操作系统)和GOARCH(用于架构)。

可以通过三种方式引入编译约束限制:命令行、代码注释、或文件拓展名约定。

//如下为使用命令行来设置约束
GOOS="linux" GOARCH="amd64" go build main.go

go doc命令

go doc命令可以让你查询有关包、函数、方法或变量的文档。该文档作为注释嵌入代码中。

go doc命令的输出信息是从代码的注释中获取的,只要对包、函数、方法和变量注释地足够充分,就可以通过go doc命令来查询文档。

//如下为使用doc命令查询函数fmt.Println()的详细信息
go doc fmt.Println
//输出如下
func Println(a ...interface{}) (n int, err error)
Println formats using the default formats for its operands and writes to
standard output. Spaces are always added between operands and a newline is
appended. It returns the number of bytes written and any write error
encountered.

go get命令

当在开发Go程序时需要第三方包,要获取包的源代码,就需要用到go get命令。

即便你在程序中已经导入了第三方包,但是你无法访问该包。首先需要运行go get命令来下载第三方包。下载后的包将存放在$GOPATH/src目录下。

go fmt命令

go fmt命令可以自动格式化代码。使用该命令会强制使用正确的换行、缩进和大括号对其来设置代码样式。

golint和go vet命令

go fmt会更改代码的语法样式,而golint会报告错误样式,例如缺少注释、不遵循约定的变量名、无用的类型规范等。注意,golint是独立的工具而不是Go主程序的命令。

使用go vet会检查代码并使用启发式方法来识别可疑的构造。go vet命令尝试确定编译器可能会忽略的问题,其中一些可能是合法的错误。

其他的命令工具

go clean命令会删除掉执行其它命令时产生的一些文件和目录。

go test命令用于对Go语言编写的程序进行测试。

go list命令的作用是列出指定的代码包的信息。

go fix会把指定代码包的所有Go语言源码文件中的旧版本代码修正为新版本的代码。

go tool pprof命令来交互式的访问概要文件的内容

go install用于编译并安装指定的代码包及它们的依赖包。

最新文章

  1. Nginx 利用 X-Accel-Redirect response.setHeader 控制文件下载
  2. NOIP 2001解题报告
  3. (medium)LeetCode 238.Product of Array Except Self
  4. jquery图片放大器插件
  5. Log4Net 的简要配置
  6. 一維條碼編碼規則(1D Barcode)
  7. 使用Spring的JavaConfig 和 @Autowired注解与自动装配
  8. 如何理解Unity组件化开发模式
  9. Visual Studio 开发(二):VS 2017配置FFmpeg开发环境
  10. 谈谈MySQL优化原理
  11. 2017软工实践K班总结
  12. Python 私有
  13. world转html在线编辑器
  14. C#编程(六十八)----------LINQ小结
  15. 使用spring initialization创建SpringBoot项目
  16. 演示Microsoft Advertising SDK for Windows Phone 8.1
  17. 数学图形之莫比乌斯带(mobius)
  18. String类的编码和解码问题
  19. 第一个PyQt5窗口
  20. jQuery考试

热门文章

  1. pyhon对excel的xls与xlsx的读取,写入
  2. scrapy架构与目录介绍、scrapy解析数据、配置相关、全站爬取cnblogs数据、存储数据、爬虫中间件、加代理、加header、集成selenium
  3. CI/CD介绍以及jenkins安装 1.1
  4. 【算法】堆排序(Heap Sort)(七)
  5. 896.Montonic Array - LeetCode
  6. mac安装java环境
  7. SpringCloud Alibaba Sentinel 限流详解
  8. Python使用EasyOCR库对行程码图片进行OCR文字识别介绍与实践
  9. kafka消费
  10. C++ 炼气期之数组探幽