Go语言基础二:常用的Go工具命令
常用的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用于编译并安装指定的代码包及它们的依赖包。
Go语言基础二:常用的Go工具命令的更多相关文章
- C语言基础二(敲打键盘、寻找资料)
看过很多资料的人,估计发觉了什么,我上篇的基础一其中一个最致命的错误,没有加return 0; 为什么不加,说真的,我留个坑,所以跳跃性的直接说到函数是如何运用的. 上章说到main就是主入口,根据m ...
- Java语言基础二
1.常量的概述和使用 A:什么是常量 B:Java中常量的分类 常量分类为六种:a.”字符串” b.’字符’ c.整数 d.小数 e.boolern(布尔类型) 返回值为 FALSE和TRUE ...
- C语言基础--二维数组
二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...
- C语言基础:二维数组 分类: iOS学习 c语言基础 2015-06-10 21:42 16人阅读 评论(0) 收藏
二维数组和一位数组类似. 定义: 数据类型 数组名[行][列]={{ },{ }....}; 定义时,一维(行)的长度可以省略,但是二维(列)的长度不可以省略.但是访问时,一定使用双下标. 二维数组的 ...
- C语言基础 (8) 常用字符串处理函数
复习 如何调用库函数(别人写好的函数) 1) 头文件:包含指定的头文件,头文件主要包含此函数的声明 2) 函数名字:函数名字必须和头文件声明的名字一样 字符串常用处理函数: 1 ...
- C语言基础二维数组
(1)二位数组的定义int array[n][m],行下标的取值范围是0~n-1,列下标的取值范围是0~m-1,二维数组最大下标元素是array[n-1][m-1]:如定义一个3行4列的数组 int ...
- 01C语言基础(二)
Day07 笔记 指针和函数: 栈 帧: 当函数调用时,系统会在 stack 空间上申请一块内存区域,用来供函数调用,主要存放 形参 和 局部变量(定义在函数内部). 当函数调用结束,这块内存区域自动 ...
- R语言基础(二) 可视化基础
> which.max(apply(x[c("x1","x2","x3")], 1, sum))49 > x$num[which ...
- C语言基础二
C--顺序程序设计 赋值语句 赋值语句和赋值表达式的区别: if((a = b) > 0) t = 0; 字符数据的输入输出 putchar函数 该函数为字符输出函数,其作用是向终端数出一个字符 ...
随机推荐
- 在SpringBoot中使用logback优化异常堆栈的输出
一.背景 在我们在编写程序的过程中,无法保证自己的代码不抛出异常.当我们抛出异常的时候,通常会将整个异常堆栈的信息使用日志记录下来.通常一整个异常堆栈的信息是比较多的,而且存在一些没用的信息.那么我们 ...
- 292. Nim Game - LeetCode
Question 292. Nim Game Solution 思路:试着列举一下,就能发现一个n只要不是4的倍数,就能赢. n 是否能赢 1 true 2 true 3 true 4 false 不 ...
- c++:-9
上节(c++:-8)主要学习了C++的流类库和输入输出,本节学习C++的异常处理. 异常处理 介绍 (1)异常处理的基本思想: (2)异常处理的语法: (3)举例:处理除0异常 #include &l ...
- 安装Python到Linux(Pyenv)
pyenv是一个多Python版本的托管工具,我们可以使用它安装Python和随意的切换系统环境中默认使用的Python版本. 运行环境 系统版本:CentOS Linux release 7.6.1 ...
- 【Unity Shader学习笔记】Unity光照基础-漫反射光照
本代码只适用于平行光. 1.逐顶点漫反射光照 1.1漫反射光照原理 1.2代码实现 在Properties语义块中声明一个漫反射颜色属性 Properties { //漫反射参数,用于调整漫反射效果 ...
- 20212115朱时鸿 《python程序设计》实验四报告
课程:<Python程序设计>班级: 2121姓名: 朱时鸿学号:20212115实验教师:王志强实验日期:2022年5月28日必修/选修: 公选课 1.实验内容 Python综合应用:爬 ...
- [XJOI3529] 左右
题目链接:左右 Description 给你一个s数组,一个t数组,你可以对s数组执行以下两种操作 L 操作:每个数等于其左边的数加上自己 R 操作:每个数等于其右边的数加上自己 第一个数的左边是最后 ...
- ubuntu使用postfix和AWS-SES发送邮件
在日常开发中,邮件发送是个比较常见的场景.因此出现了很多相关的软件和服务,各大云厂商也推出自己的邮件服务.今天笔者就像大家介绍一种常见的组合,AWS的邮件服务 SES 与邮件服务器 postfix 的 ...
- WinForms拖控件拖到天荒地老
更新记录: 2022年4月15日:本文迁移自Panda666原博客,原发布时间:2021年4月18日. 2022年4月15日:更新自动生成Web CURD工具. 说明 Winforms的控件拖起来是真 ...
- BUUCTF-面具下的flag
面具下的flag 010editor打开发现存在ZIP binwalk -e mianju.jpg 分离压缩包出来 但是存在密码.猜测是伪加密,直接编辑器搜504B0102找到第五组字符组改为00即可 ...