杜龙少(sdvdxl)

golang命令

Word count: 1,114 / Reading time: 5 min
2016/03/13 Share

Go 提供了很多好用的命令比如可以用go get 直接从网络上导入包下面介绍一些常用的Go命令

go get

基本用法

go get 命令用来直接下载并安装网络上的包到GOPATH事实上它依赖于版本控制工具比如常用的GitMercurial比如我们要使用github.com/golang/text这个包那么可以执行命令go get github.com/golang/text稍后片刻依照网络情况时间长短不一那么这个包源码就会放到 GOPATH/src对应的目录下编译好的文件会放到GOPATH/pkg对应的目录下如果有可执行性代码那么会将编译好的可执行性文件放到GOPATH/bin目录下

高级用法

像刚才例子中提到的github.com/golang/text这个包下又有子包也想get下来该如何做呢也许你想没办法一个一个get的确这是一个不错的方法但是有一个更为高效和优雅的方式那就是...这个符号代表旗下子目录那我们可以这样操作go get github.com/golang/text ...就可以将text和其子包同时get下来了

参数

  • -v 可以显示正在get的包
  • -x 可以显示正在执行的命令

    go build

    编译go文件
    可以切换到要build的包中执行go build也可以直接 go build + 包名如要buildgithub.com/golang/text可以切换到text包目录下执行go build也可以直接执行go build github.com/golang/text这样就可以build text包了如果要build子包那么输入go build ./...build命令会将main函数编译成可执行性文件如果没有main那么没有额外的文件产生

go clean

cleanbuild作用相反是将build出来的可执行性文件清除掉

go install

install 命令是将包编译成二进制文件并放到GOPATH/pkg/目标平台/对应的目录下比如我们自己从github上克隆了github.com/golang/text要使用它的话需要进入到text包中然后执行 go install加入有子包也要安装的话输入go install ./...就会在GOPATH/pkg/目标平台/产生后缀为.a的文件当然也可以和build一样输入完整的包路径

go list

这个命令用来查看所引用的包

基本用法

  1. 直接跟包名github.com/golang/text会打印这个包本身也可以切换到该包目录下执行go list效果相同
  2. 可以直接跟包名+/…比如要查看github.com/golang/text这个包的导入情况执行go list github.com/golang/text/...会打印本包的go文件

    参数

    -f可以指定打印格式默认是go list -f ' {{.ImportPath}} ' -f后面的参数可以用下面结构体的属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 type Package struct {
Dir string // directory containing package sources
ImportPath string // import path of package in dir
ImportComment string // path in import comment on package statement
Name string // package name
Doc string // package documentation string
Target string // install path
Goroot bool // is this package in the Go root?
Standard bool // is this package part of the standard Go library?
Stale bool // would 'go install' do anything for this package?
Root string // Go root or Go path dir containing this package

// Source files
GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles)
CgoFiles []string // .go sources files that import "C"
IgnoredGoFiles []string // .go sources ignored due to build constraints
CFiles []string // .c source files
CXXFiles []string // .cc, .cxx and .cpp source files
MFiles []string // .m source files
HFiles []string // .h, .hh, .hpp and .hxx source files
SFiles []string // .s source files
SwigFiles []string // .swig files
SwigCXXFiles []string // .swigcxx files
SysoFiles []string // .syso object files to add to archive

// Cgo directives
CgoCFLAGS []string // cgo: flags for C compiler
CgoCPPFLAGS []string // cgo: flags for C preprocessor
CgoCXXFLAGS []string // cgo: flags for C++ compiler
CgoLDFLAGS []string // cgo: flags for linker
CgoPkgConfig []string // cgo: pkg-config names

// Dependency information
Imports []string // import paths used by this package
Deps []string // all (recursively) imported dependencies

// Error information
Incomplete bool // this package or a dependency has an error
Error *PackageError // error loading package
DepsErrors []*PackageError // errors loading dependencies

TestGoFiles []string // _test.go files in package
TestImports []string // imports from TestGoFiles
XTestGoFiles []string // _test.go files outside package
XTestImports []string // imports from XTestGoFiles
}

如果想打印比较全的信息也有一个参数可以使用-json这会将上面部分信息以json格式打印出来读者可以自行实验

go run

这个命令可以直接运行go文件main函数不需要编译成二进制可执行性文件

CATALOG
  1. 1. go get
    1. 1.1. 基本用法
    2. 1.2. 高级用法
    3. 1.3. 参数
  2. 2. go build
  3. 3. go clean
  4. 4. go install
  5. 5. go list
    1. 5.1. 基本用法
    2. 5.2. 参数
  6. 6. go run