命令源码文件

源码文件分为三种:

1、 命令源码文件

2、库源码文件

3、测试源码文件

命令源码文件:

声明自己属于main包且包含main函数的源码文件,一个包里边不要有那么多个命令源码文件,虽然用go install, go run 单独执行命令源码文件没有问题,但go install ,go run 包含命令源码文件的文件夹时会出现错误。如果一个源码文件声明属于main包,并且包含一个无参数声明且无结果声明的main函数,那么它就是命令源码文件

库源码文件:

不具备命令源码文件两个特征的源码文件,也就是存在与某个包的普通源码文件。库源码文件安装后,相应的归档文件(*.a)被存放在当前工作区的pkg目录下。

测试源码文件:

测试源码文件:名称以_test.go为后缀的源码文件,且必须包含Test或Beanchmark为名称前缀的函数。这里不详细描述,后面总结。

go run

1、在临时工作目录下生成归档文件和可执行文件

2、如果使用go run -work 保留临时工作目录,再执行go run时,如果命令源码没有变化,就不不会再执行compile.exe

go build

主要用于测试编译。编译过程中,如果有必要会同时编译与之关联的包

  1. 在临时文件夹生成生成归档文件*.a(库源码文件)或在当前目录下生成可执行文件(命令源码文件)
  2. 库源码文件只编译,命令源码文件先编译再link,然后生成可执行文件
  3. 如果是普通包,执行go build不会产生任何文件,可以用来检测库源码文件是否有效
  4. 如果是mian包,会在mian包下生成可执行文件。使用go build -o 路径,可在指定目录下生成可执行文件。
  5. go build会编译目录下所有的go文件,go build go文件可以只编译某个文件。
  6. 通过go build -o 可执行文件名 方式生成指定名字的可执行文件。默认情况下是package名(非main包)或者文件夹名(main包)
  7. go build 会忽略以_或.开头的go文件

go install

命令分成两步执行:第一步生成可执行文件或归档文件(.a包),第二部把编译后的文件移动到GOPATH/bin(可执行文件)或GOPATH/pkg下(.a)

1.步骤:compile(归档文件) -> link (可执行文件) -> 将可执行文件移动到bin,归档文件移动到pkg;compile,link在临时文件夹下执行

go doc

godoc -http=:9500 在本地生成go文档服务器 通过http://localhost:9500访问

go get

用于从远程仓库下载并安装代码包。注意,go get会代码包下载到GOPATH中的第一个工作区的src目录中,并安装

有用的标记-u标记,加上它可以利用网络来更新已有的代码包及其依赖包,如果已经下载过代码包,但这个代码包又有更新了,那么可以用-u标记更新本地的对应代码包。如果不加-u标记,执行go get 一个已有的代码包,会发现命令什么也不执行,只有加了-u标记,命令才会去执行git pull命令拉取最新的代码包版本,下载并安装。

go get还有一个称道的功能--智能下载。在使用它检出或更新代码包后,它会寻找与本地已安装Go语言的版本号相对应的标签(tag)或分支(branch)。比如,本机安装Go语言版本是1.x,那么go get命令会在该代码包的远程仓库中寻找名为"go1"的标签或分支,如果找到指定的标签或分支,则将本地代码包版本切换到此标签或分支,如果没有找到指定标签或分支,则将本地代码包版本切换到主干的最新版本。

go get -x github上源码包的浏览器地址(注意没有协议) -x 显示命令的执行过程
参数 说明
-d 让命令只执行下载动作,不执行安装动作
-f 仅在使用-u有效时。会让命令忽略掉对已下载代码包的导入路径的检查。如果下载并安装的代码包所属的项目是你从别人哪里fork过来的,这样做就尤为重要了。
insecure 允许命令程序使用非安全的schme(如http)去下载指定的代码包,如果你用的代码仓库没有https支持,可以添加此标记。
-t 让命令程序同时下载并安装指定的代码包中的测试源码文件中依赖的代码包
-u 让命令利用网络来更新已有代码包及其依赖包。默认情况下,不加-u时只会从网络上下载本地不存在的依赖包,而不会更新已经存在的代码包。
-fix 让命令在下载代码包后先执行修正动作,而后再进行编译与安装

参考:https://www.cnblogs.com/henryno12/p/12301799.html

原文地址:https://www.cnblogs.com/shix0909/p/13539505.html