在公司已经实习了十多天了,一只都是在看很多资料、文档、教程、公司项目源码,一直都没有时间写一些总结的笔记什么的,马上就要放春节了就比较轻松下来了,试着写一下Golang中特别好用的Go 命令行工具。

1. 工具总览

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

如果我们想要查看某个命令的详细情况可以使用命令:

$ go help [command]

这里我不会全部都讲,只会讲一些常用的好用的命令。

2. Go工作区结构

$GOPATH$GOPATH$GOPATH
src$GOROOTsrc$GOPATH

目前直观的感受也就只有这么多了,可以查考我找到一个老哥写的Gopath讲解:go入门--设置 GOPATH 有什么意义?

$GOPATH
  1. 在~/.bash_profile中添加
export GOPATH=$HOME/gobook
export PATH=${PATH}:${GOPATH}/bin
  1. 使用source命令加载配置配置文件
source ~/.bash_profile
2.0
$GOPATH
srcpkgbin
src

3. go env

上面我们提到了很多的GO语言中需要用的到一些系统环境变量,GO语言中的环境变量是很多的,我们可以使用env命令来查看这些变量的值。

$ go env
...
GOPATH="/home/gopher/gobook"
GOROOT="/usr/local/go"
GOARCH="amd64"
GOOS="darwin"
GOCACHE="/Users/alphababy/Library/Caches/go-build"
...

不同的变量有不同的作用,上面列出来的几个是比较重要的:

GOOSGOARCHGOCACHE

这四个变量在我们编译go语言的时候会起作用。

4. go get

使用Go语言工具箱的go命令,不仅可以根据包导入路径找到本地工作区的包,甚至可以从互联网上找到和更新包。

go getgo get
go get

go get命令支持当前流行的托管网站GitHub、Bitbucket和Launchpad,可以直接向它们的版本控制系统请求代码。对于其它的网站,你可能需要指定版本控制系统的具体路径和协议,例如 Git或Mercurial。

go get命令获取的代码是真实的本地存储仓库,而不仅仅只是复制源文件,因此你依然可以使用版本管理工具比较本地代码的变更或者切换到其它的版本。

get-u -v-u-v

5. go build

build$GOPATH/srctest