go命令初探

go Terry 239浏览 0评论

先看看go自带哪些命令:

Go is a tool for managing Go source code.

Usage:

  go <command> [arguments]

The commands are:

  bug         start a bug report
  build       compile packages and dependencies
  clean       remove object files and cached files
  doc         show documentation for package or symbol
  env         print Go environment information
  fix         update packages to use new APIs
  fmt         gofmt (reformat) package sources
  generate    generate Go files by processing source
  get         download and install packages and dependencies
  install     compile and install packages and dependencies
  list        list packages or modules
  mod         module maintenance
  run         compile and run Go program
  test        test packages
  tool        run specified go tool
  version     print Go version
  vet         report likely mistakes in packages

Use "go help <command>" for more information about a command.

Additional help topics:

  buildmode   build modes
  c           calling between Go and C
  cache       build and test caching
  environment environment variables
  filetype    file types
  go.mod      the go.mod file
  gopath      GOPATH environment variable
  gopath-get  legacy GOPATH go get
  goproxy     module proxy protocol
  importpath  import path syntax
  modules     modules, module versions, and more
  module-get  module-aware go get
  packages    package lists and patterns
  testflag    testing flags
  testfunc    testing functions

Use "go help <topic>" for more information about that topic.

go build
用于编译我们指定的源码文件或代码包以及它们的依赖包。如果我们在执行go build命令时不后跟任何代码包,那么命令将试图编译当前目录所对应的代码包。

go install
用于编译并安装指定的代码包及它们的依赖包。当指定的代码包的依赖包还没有被编译和安装时,该命令会先去处理依赖包。go install命令只比go build命令多做了一件事,即:安装编译后的结果文件到指定目录。

如果go install命令后跟的代码包中仅包含库源码文件,那么go install命令会把编译后的结果文件保存在源码文件所在工作区的pkg目录下。对于仅包含库源码文件的代码包来说,这个结果文件就是对应的代码包归档文件(也叫静态链接库文件,名称以.a结尾)。相比之下,我们在使用go build命令对仅包含库源码文件的代码包进行编译时,是不会在当前工作区的src目录以及pkg目录下产生任何结果文件的。结果文件会出于编译的目的被生成在临时目录中,但并不会使当前工作区目录产生任何变化。

go clean

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

  1. 在使用go build命令时在当前代码包下生成的与包名同名或者与Go源码文件同名的可执行文件。在Windows下,则是与包名同名或者Go源码文件同名且带有“.exe”后缀的文件。
  2. 在执行go test命令并加入-c标记时在当前代码包下生成的以包名加“.test”后缀为名的文件。在Windows下,则是以包名加“.test.exe”后缀为名的文件。我们会在后面专门介绍go test命令。
  3. 如果执行go clean命令时带有标记-i,则会同时删除安装当前代码包时所产生的结果文件。如果当前代码包中只包含库源码文件,则结果文件指的就是在工作区的pkg目录的相应目录下的归档文件。如果当前代码包中只包含一个命令源码文件,则结果文件指的就是在工作区的bin目录下的可执行文件。
  4. 还有一些目录和文件是在编译Go或C源码文件时留在相应目录中的。包括:“_obj”和“_test”目录,名称为“_testmain.go”、“test.out”、“build.out”或“a.out”的文件,名称以“.5”、“.6”、“.8”、“.a”、“.o”或“.so”为后缀的文件。这些目录和文件是在执行go build命令时生成在临时目录中的。如果你忘记了这个临时目录是怎么回事儿,可以再回顾一下前面关于go build命令的介绍。临时目录的名称以go-build为前缀。
  5. 如果执行go clean命令时带有标记-r,则还包括当前代码包的所有依赖包的上述目录和文件。

go get
根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装。

go run
编译并运行命令源码文件。

go test
自动测试每一个指定的代码包,测试源码文件是名称以“_test.go”为后缀的、内含若干测试函数的源码文件。测试函数一般是以“Test”为名称前缀并有一个类型为“testing.T”的参数声明的函数。

go env
打印Go语言的环境信息

转载请注明:Terry's blog » go命令初探

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址