go get
用来动态获取远程代码包
这个命令内部实际上分成二步操作:第一步是下载源码包,第二部是执行go install
# 获取远程包
go get github.com/victor/mydb
# 参数可以自动更新包
go get -u
# 使用远程包,只要在开头import 相应的路径就可以
import "github.com/victor/mydb"
-d
只下载不安装-u
强制使用网络去更新包和它的依赖包-f
只有在包含了-u
参数的时候才有效,不让-u
去验证import
中的每一个都已经获取了,这对于本地fork
的包特别有用-t
同时也下载需要为运行测试所需要的包-v
显示执行的命令
go build
主要用于编译代码
-
如果是普通包,当执行
go build
之后,它不会产生任何文件。如果需要再$GOPATH/pkg
下生成相应的文件,那就待执行go install
-
如果是
main
包,当执行go build
之后,会在当前目录下生成一个可执行文件。如果需要再$GOPATH/pkg
目录下生成相应的文件,需要执行go install
,或者使用go build -o path/main.go 代码路径
,示例go]$ go build -o bin/sort src/day4/sort/test1/main.go
-
如果某个项目文件夹下有多个文件,而只想编译某个文件,就可在
go build
之后加上文件名,例如go build a.go
;go build
命名默认会编译当前目录下的所以go
文件 -
也可以指定编译输出的文件名,可以指定
go build -o sort.go
,默认情况是你的package
名(非main 包),或者是第一个源文件的文件名(main 包) -
go build
会忽略目录下"_"
或"."
开头的go
文件 -
-o
指定输出的文件名,可以带上路径,例如go build -o a/b/c
-
-i
安装相应的包,编译+go install
-
-a
更新全部已经是最新的包 -
-n
把需要执行的编译命令打印出来,但是不执行 -
-x
把需要执行的编译命令打印出来,但是会执行 -
-p n
指定可以并行可运行的编译数目,默认是CPU 数目 -
-v
打印出来正在编译的包名 -
-ccflags 'arg list'
传递参数给5c,6c,8c调用 -
-compiler name
指定相应的编辑器,gccgo
还是gc
go clean
用来移除当前源码包和关联源码包里面编译生成的文件
一般都是用这个命令清除编译文件,然后github提交,在本机测试的时候这些编译文件和系统相关的,但是对于源码管理来说没必要
$ go clean -i -n
-
-i
清除关联的安装包和可运行的文件,也就是通过go install
安装的文件 -
-n
把需要执行的清除命令打印出来,但是不执行,这样就很容易只知道底层是如何运行的 -
-r
循环的清除在import
中引入的包 -
-x
打印出来执行的详细命令,就是-n
的打印的可执行版本
go fmt
格式化代码,修改成标准格式,平常很少用到这个命令,因为开发工具里面
一般都自带了保存时候的自动格式化功能
$ gofmt -w -l src
-l
显示那些需要格式化的文件-w
吧改写后的内容直接写入到文件中,而不是作为结果打印到标准输出-s
简化文件中的代码-d
显示格式化前后的diff
而不是写入文件,默认是false
-e
打印所有的语法错误到标准输出,如果不标记,默认打印不同行的前10
个错误
其他命令
godoc
需要安装go get golang.org/x/tools/cmd/godoc
go version 查看go当前版本
go env 查看当前go的环境变量
go list 列出当前全部安装的package
go run 编译并运行Go程序