• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go学习笔记-常见命令

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

go 命令

可以在控制台执行go来查看

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 build

这个命令主要用于编译代码。在包的编译过程中,若有必要,会同时编译与之相关联的包。

如果是普通包,就像我们在1.2节中编写的mymath包那样,当你执行go build之后,它不会产生任何文件。如果你需要在$GOPATH/pkg下生成相应的文件,那就得执行go install。

如果是main包,当你执行go build之后,它就会在当前目录下生成一个可执行文件。如果你需要在$GOPATH/bin下生成相应的文件,需要执行go install,或者使用go build -o 路径/a.exe。

如果某个项目文件夹下有多个文件,而你只想编译某个文件,就可在go build之后加上文件名,例如go build a.go;go build命令默认会编译当前目录下的所有go文件。

你也可以指定编译输出的文件名。例如1.2节中的mathapp应用,我们可以指定go build -o astaxie.exe,默认情况是你的package名(非main包),或者是第一个源文件的文件名(main包)。

(注:实际上,package名在Go语言规范中指代码中“package”后使用的名称,此名称可以与文件夹名不同。默认生成的可执行文件名是文件夹名。)

go build会忽略目录下以“_”或“.”开头的go文件。

如果你的源代码针对不同的操作系统需要不同的处理,那么你可以根据不同的操作系统后缀来命名文件。例如有一个读取数组的程序,它对于不同的操作系统可能有如下几个源文件:

array_linux.go array_darwin.go array_windows.go array_freebsd.go

go build的时候会选择性地编译以系统名结尾的文件(Linux、Darwin、Windows、Freebsd)。例如Linux系统下面编译只会选择array_linux.go文件,其它系统命名后缀文件全部忽略。

参数的介绍

-o 指定输出的文件名,可以带上路径,例如 go build -o a/b/c   
-i 安装相应的包,编译+go install    
-a 更新全部已经是最新的包的,但是对标准包不适用 
-n 把需要执行的编译命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的 
-p n 指定可以并行可运行的编译数目,默认是CPU数目    
-race 开启编译的时候自动检测数据竞争的情况,目前只支持64位的机器    
-v 打印出来我们正在编译的包名   
-work 打印出来编译时候的临时文件夹名称,并且如果已经存在的话就不要删除  
-x 打印出来执行的命令,其实就是和-n的结果类似,只是这个会执行   
-ccflags 'arg list' 传递参数给5c, 6c, 8c 调用   
-compiler name 指定相应的编译器,gccgo还是gc    
-gccgoflags 'arg list' 传递参数给gccgo编译连接调用  
-gcflags 'arg list' 传递参数给5g, 6g, 8g 调用   
-installsuffix suffix 为了和默认的安装包区别开来,采用这个前缀来重新安装那些依赖的包,-race的时候默认已经是-installsuffix race,大家可以通过-n命令来验证     
-ldflags 'flag list' 传递参数给5l, 6l, 8l 调用  
-tags 'tag list' 设置在编译的时候可以适配的那些tag,详细的tag限制参考里面的 Build Constraints   

go clean

这个命令是用来移除当前源码包和关联源码包里面编译生成的文件。这些文件包括

_obj/            旧的object目录,由Makefiles遗留
_test/           旧的test目录,由Makefiles遗留
_testmain.go     旧的gotest文件,由Makefiles遗留
test.out         旧的test记录,由Makefiles遗留
build.out        旧的test记录,由Makefiles遗留
*.[568ao]        object文件,由Makefiles遗留

DIR(.exe)        由go build产生
DIR.test(.exe)   由go test -c产生
MAINFILE(.exe)   由go build MAINFILE.go产生
*.so             由 SWIG 产生

参数介绍

-i 清除关联的安装的包和可运行文件,也就是通过go install安装的文件   
-n 把需要执行的清除命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的 
-r 循环的清除在import中引入的包 
-x 打印出来执行的详细命令,其实就是-n打印的执行版本

go get

这个命令是用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code和Launchpad。这个命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行go install。下载源码包的go工具会自动根据不同的域名调用不同的源码工具,对应关系如下:

BitBucket (Mercurial Git)
GitHub (Git)
Google Code Project Hosting (Git, Mercurial, Subversion)
Launchpad (Bazaar)

为了go get 能正常工作,你必须确保安装了合适的源码管理工具,并同时把这些命令加入你的PATH中。

参数介绍:

-d 只下载不安装
-f 只有在你包含了-u参数的时候才有效,不让-u去验证import中的每一个都已经获取了,这对于本地fork的包特别有用
-fix 在获取源码之后先运行fix,然后再去做其他的事情
-t 同时也下载需要为运行测试所需要的包
-u 强制使用网络去更新包和它的依赖包
-v 显示执行的命令

go test

执行这个命令,会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。输出的信息类似

ok   archive/tar   0.011s
FAIL archive/zip   0.022s
ok   compress/gzip 0.033s

默认的情况下,不需要任何的参数,它会自动把你源码包下面所有test文件测试完毕,当然你也可以带上参数,常用的参数:

-bench regexp 执行相应的benchmarks,例如 -bench=.
-cover 开启测试覆盖率
-run regexp 只运行regexp匹配的函数,例如 -run=Array 那么就执行包含有Array开头的函数
-v 显示测试的详细命令

go run

执行这个命令,编译并直接运行程序,会产生一个临时文件(但不会生成 .exe 文件),直接在命令行输出程序执行结果。常用参数:

-a:强制编译相关代码,无论是否编译过 
-v:列出被编译的代码包的名称 
-a -v:列出所有被编译的代码包的名称 
-p n:并行编译,其中n为并行的数量 如-p 2 
-n:打印编译过程中所需运行的命令,但并不执行这些命令 
-x:打印编译过程中所需运行的命令,并执行这些命令 
-work:显示编译时创建的临时工作目录的路径,并且不删除这个临时工作目录 

除了以上的这些命令外,还可以使用go help 命令获取更详细的帮助信息。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go语言之进阶篇文件常用操作接口介绍和使用发布时间:2022-07-10
下一篇:
go1.11新特性,mark一下发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap