golang
  • Introduction
  • 环境安装
    • vscode
    • liteide
  • 第一个Go程序
  • Go项目结构
  • Go语言命令
  • 变量
  • 数据类型
    • array
    • slice
    • map
    • struct
    • interface
    • string
    • channel
    • 类型转换
  • 循环语句
  • HTTP编程
  • init函数
Powered by GitBook
On this page
  • build
  • install
  • get
  • run
  • Reference

Was this helpful?

Go语言命令

本文介绍几个比较常用的命令

go build
go install
go get
go run

build

常用方法:go build [package]

  • 库源码文件

一个带有main函数的包,build命令会将其编译成一个可执行文件。比如program1是gopath/src下的一个项目,结构如下

program1
└── main.go

那么go build program1会将该包编译成一个同名可执行文件,放在go build命令的当前目录下。由于build命令 会把生成的二进制文件放在当前目录下,所以我们不能够在$gopath/src下执行go build program1,因为该目录下已经有了program1这个文件夹,不能再生成一个同名的文件。不过,我们可以在除了$gopath/src以外的任何目录执行这个命令。

我们还可以进入到$gopath/src/program1/目录下直接执行go build命令,不带包名,那么会在当前目录下生成package1可执行文件。

  • 非main包

一个不带main函数的包,build命令将其编译后不会生成任何文件。比如program2是gopath/src下的一个项目,结构如下

program2
└── hello.go

那么go build program2会将该包编译一次,但是不会生成任何文件。那么,既然不会生成任何文件,对于非main包,build命令有什么用呢?答案是,我们可以用它来检查某个包能否编译通过,因为该命令虽然不生成可以文件,但还是会完成编译的过程。

install

常用方法:go install package

install其实与build很相似。不同的地方在于,对于main包,install把生成的二进制文件放在$gopath/bin/目录下,而非当前目录下。对于非main包,install会把编译生成.a文件放在$gopath/pkg下。

get

常用方法:go get [-d] [-u] [-v] package

get命令的效果相当于git clone加go install。第一步先从远程仓库下载下载包,第二步install包。介绍一下get命令中的几个常用的参数

  • -d:只clone,不install

  • -v:打印日志

  • -u:如果包在本地已经存在,则默认不会从远程仓库拉取,只install。但如果指定了-u参数,则从远程仓库拉取最新的版本到本地然后install

run

常用方法:go run package|main.go

run命令后面一般只接main包。我们可以在任意路径下执行go run main-package 命令,或者进入到main-package目录下执行go run main.go。这两个命令不会生成二进制文件,但是却会把程序执行一次。

Reference

[1] https://stackoverflow.com/questions/30612611/what-does-go-build-build

PreviousGo项目结构Next变量

Last updated 5 years ago

Was this helpful?