链客,专为开发者而生,有问必答!
此文章来自https://www.liankexing.com/notetwo/8144,未经允许,拒绝转载
Golang学习-基础命令
一、go run
用于运行命令源码文件,只能接收一个命令源码文件以及若干个库源码文件作为参数。先将源码文件编译成临时文件,然后再运行这个临时文件,临时文件可能包括可执行文件和归档文件。这些临时文件如果不做命令标记,会在被运行后被删除。
下面是go run命令常用的标记:
–a : 强制编译相关代码文件,无论代码文件是否有更新
–n : 打印编译过程中所需要的命令,但是不执行它
–p N : 并行编译,其中N为CPU逻辑个数
–v : 列出被编译的代码包名称
–work : 显示编译时创建的临时工作目录,注意这些目录并不会删除
–x : 打印编译过程中需要的命令,并执行
二、go build
用于编译源码文件或代码包,编译非命令源码文件不会产生结果文件,它只会检查源码文件的有效性;go build编译命令源码文件会在当前源码文件所在目录下生成可执行文件。
执行该命令且不追加任何参数,他会试图把当前目录作为代码包并编译
以代码包导入路径作为参数,该代码包及其依赖会被编译
以若干源码文件作为参数,只会编译参数列出的源码文件,这是需要注意列出源码文件的完整性
三、go install
go run用于编译并安装代码包或源码文件。安装代码包会在/<当前工作区>/pkg/<平台相关目录>/下生成归档文件;安装命令源码文件会在当前工作区的bin目录下或
G
O
B
I
N
下
生
成
可
执
行
文
件
。
执
行
该
命
令
且
不
追
加
任
何
参
数
时
,
它
会
试
图
把
当
前
目
录
作
为
代
码
包
编
译
并
安
装
执
行
该
命
令
且
以
代
码
包
的
导
入
路
径
作
为
参
数
时
,
该
代
码
包
及
依
赖
会
被
安
装
执
行
该
命
令
且
以
源
码
文
件
作
为
参
数
,
只
有
这
些
源
码
文
件
被
编
译
安
装
四
、
g
o
g
e
t
g
o
g
e
t
用
于
从
远
程
代
码
仓
库
下
载
并
安
装
代
码
包
,
它
所
支
持
的
代
码
控
制
系
统
:
G
i
t
S
V
N
M
e
r
c
u
r
i
a
l
(
h
g
)
B
a
z
a
a
r
指
定
的
代
码
包
会
被
下
载
到
GOBIN下生成可执行文件。 执行该命令且不追加任何参数时,它会试图把当前目录作为代码包编译并安装 执行该命令且以代码包的导入路径作为参数时,该代码包及依赖会被安装 执行该命令且以源码文件作为参数,只有这些源码文件被编译安装 四、go get go get用于从远程代码仓库下载并安装代码包,它所支持的代码控制系统: Git SVN Mercurial(hg) Bazaar 指定的代码包会被下载到
GOBIN下生成可执行文件。执行该命令且不追加任何参数时,它会试图把当前目录作为代码包编译并安装执行该命令且以代码包的导入路径作为参数时,该代码包及依赖会被安装执行该命令且以源码文件作为参数,只有这些源码文件被编译安装四、goget goget用于从远程代码仓库下载并安装代码包,它所支持的代码控制系统:GitSVNMercurial(hg)Bazaar指定的代码包会被下载到GOPATH中包含的第一个工作区的src目录中。
下面是go get命令常用的标记:
-d :只执行下载动作不执行安装动作
-fix : 在下载代码包后先执行修正动作,然后再进行编译安装
-u :利用网络来更新已有的代码包及其依赖
注:当使用go get命令时,其实使用了git等管控工具进行操作。加-u标记会remote后执行pull的操作。可以加上-x标记查看它所使用命令。