前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 语言学习之 go tool

Go 语言学习之 go tool

作者头像
frank.
发布2020-08-17 17:19:44
2.3K0
发布2020-08-17 17:19:44
举报

01

概念

在 Go 语言中,为了方便工程师写程序,提供了一些内置命令行工具,例如 fmt 可以格式化代码,统一代码风格;vet 检测代码的常见错误;build 编译代码,生成可执行程序;run 编译并立即执行可执行程序......

02

包的下载 get

在 Go 程序实际项目开发中,通常我们会导入一些三方包,通过使用关键字 import 和包的导入路径。不过这些包需使用 go get 下载,使用 go get 完成包的下载后,它会构建并安装。

go get 命令还有一些子命令,比如 -d、-f、-t、-u... 如果使用子命令 -u,go get 会将它访问的所有包(包括依赖项)更新到最新版本,然后再构建和安装。如果不使用子命令 -u,直接使用 go get 下载包时,如果本地已存在要下载的包,将会直接使用本地已存在的包。

子命令

描述

-d

仅下载,不安装

-f

和 -u 配合,强制更新,不检查是否过期

-t

下载测试代码所需的依赖包

-u

更新包,包括他们的依赖项

-v

输出详细信息

insecure

使用 http 等非安全协议

03

包的编译

  • build go build 如果没有提供参数,会默认使用当前目录作为参数。还可以使用指定目录编译,可以使用导入路径或一个相对目录名,目录必须以 “.” 或 “..” 开头。go build 默认每次都会重新编译除标准库以外的所有依赖包。

交叉编译:

通常我们在 Windows 或 Mac OS 操作系统平台下开发,但是服务器一般是 Linux 系统,在一个平台下编译出其它平台可以运行的可执行文件,就需要使用交叉编译。不过自从 Go1.5 版本开始实现自举后,交叉编译也变得更加方便,只需要使用 GOOS、GOARCH 环境变量指定目标平台和架构。

条件编译:

在实际项目开发中,可能有些文件是针对特定的平台和架构开发的,在编译过程中,也需要根据平台和架构的条件进行编译。

条件编译有三种方式,分别是:在文件名中以下划线分隔添加 GOOS 和 GOARCH,或者二者选其一;在源码文件中,package 包声明前面添加 build 指令(它是文档注释),并且与 package 包声明之间空一行,多条 build 指令表示 AND 条件,单条指令中,空格表示 OR 条件,逗号表示 AND,感叹号表示 NOT;使用 go build 的子命令 -tags 指定预定义的 build 指令,多个自定义指令用空格分隔。

  • run go run 实际上将 go build 编译并生成可执行程序,然后执行可执行程序,两个步骤合为一个步骤。从而可以节省一些开发时间。
  • vet vet 命令可以帮助开发人员检测代码的常见错误,可以节省开发时间。vet 可以检测的错误分别是,Printf 类函数调用时,类型匹配错误的参数;定义常用的方法时,方法签名的错误;错误的结构标签;没有指定字段名的结构字面量。
  • clean clean 命令可以删除编译生成的可执行文件。通常用于将源码发布到代码库时,防止可执行文件也发布到代码库。

04

安装 install

install 和 build 类似,区别在于 install 会保存每一个包的编译代码和命令,会将编译结果保存到 pkg 和 bin 目录。还有一个重要的区别是 install 支持增量编译,对于没有改变的包和命令会直接链接 pkg 目录中的静态包,不会重新编译,加快编译速度。

05

格式化 fmt

fmt 命令可以帮助开发人员自动格式化指定的源码文件并保存,建议养成在保存文件或提交到代码库之前执行 go fmt 命令的习惯。

06

测试 test

go test 命令在「Go 语言学习之测试」章节介绍过,这里不再赘述。

07

包的查询 list

list 命令行工具可以获取包的信息,go list 包导入路径,可以判断包是否存在于工作空间中,如果存在则输出它的导入路径;go list ... ,可以查询工作空间中的所有包;go list dir/...,可以查询指定目录中的所有包;go list ...xml...,可以模糊查询出相关的所有包;以上方式仅是获取包的导入路径,go list 还可以使用子命令 -json 获取包的完整元数据,使用子命令 -f 指定输出格式。

08

包的文档化

  • doc go doc 命令行工具可以输出文档注释,参数可以是包名,包成员,方法名。
  • godoc godoc 命令行工具可以提供一个 HTML 页面来浏览文档注释。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Go语言开发栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档