golang学习笔记 go 相关命令
go build 命令一些可选项的用途和用法
在运行go build命令的时候,默认不会编译目标代码包所依赖的那些代码包。当然,如果被依赖的代码包的归档文件(*.a)不存在,或者源码文件有了变化,那么它还是会被编译。
如果要强制编译它们,可以在执行命令的时候加入标记-a,此时,不但目标代码包总是会被编译,它所依赖的代码包也总会被编译,即使依赖的是标准库中的代码包也是如此。
另外,如果不但要编译依赖包,还要安装它们的归档文件,可以加入标记-i.
如何确定哪些代码包被编译?
- 运行go build时加入标记-x, 这样可以看到go build命令具体执行了哪些操作,也可以加入标记-n, 这样可以只查看具体操作而不执行它们。
- 运行go build命令时加入标记-v,这样可以看到go build命令编译的代码包的名称,它与-a 标记搭配使用。
go get
go get是自动从一些主流公用代码仓库(如Github)下载目标代码包,并把它们安装到环境变量GOPATH包含的第一个工作区的相应目录中。如果存在环境变量GOBIN,那么仅包含命令源码文件的代码包会被安装到GOBIN指向的那个目录。
最常见的几个标记有下面几种:
-u :下载并安装代码包,不论工作区中是否已经存在它们。
-d :只下载代码包,不安装代码包。
-fix:在下载代码包后先运行一个用于根据当前Go 语言版本修正代码的工具,然后再安装代码包。
-t:同时下载测试所需的代码包
-insecure: 容许通过非安全的网络协议下载和安装代码。HTTP就是这样的协议
go语言官方提供的go get命令是比较基础的,其中并没有提供依赖管理的功能。目前GitHub上有很多提供了这类功能的第三方工具,如glide、gb以及官方出品的dep,vgo等等,它们在内部大都会直接使用go get
对代码包的远程导入路径进行自定义的方法是: 在该代码包中的库源码文件的包声明语句的右边加入注释,如下:
package semaphore //import "golang.org/x/sync/semaphore"
这个代码包原本的完整导入路径是 github.com/golang/sync/semaphore.这与实际存储它的网络地址对应的。该代码包的源码实际存在GitHub的golang组的sync代码仓库的semaphore目录下。而加入导入注释之后,用以下命令即可下载并安装该代码包了:
go get golang.org/x/sync/semaphore
而go语言官网golang.org下的路径/x/sync/semaphore并不是存放semaphore包的真实地址。我们称之为代码包的自定义导入路径。
不过,这还需要在golang.org这个域名背后的服务端程序上,添加一些支持才可能使用这条命令成功.
请参考: https://github.com/hyper0x/go_command_tutorial/blob/master/0.3.md
归档文件存放的位置和规则
源码文件会以代码包的形式组织起来,一个代码包其实就对应一个目录。安装某个代码包而产生的归档文件是与这个代码包同名的。
放置它的相对目录就是该代码包的导入路径的直接父级。如,一个已存在的代码包的导入路径是:
github.com/labstack/echo
那么执行命令
go install github.com/labstack/echo
生成的归档文件的相对目录就是github.com/labstack,文件名为echo.a
顺便说下,上面这个代码包的导入路径还有另外一层含义,那就是:该代码包的源码文件存在于Github网址的labstack组的代码仓库echo中
归档文件的相对目录与pkg目录之间还有一级目录,叫做平台相关目录。平台相关目录的名称是由build(也称为“构建”)的目标操作系统、下划线和目标计算架构的代码组成的、
如,构建某个代码包的目标操作系统是linux,目标计算架构是64位,那么对应的平台相关目录就是linux_amd64.
因此,上述代码包的归档文件就会被存放在当前工作区的子目录:
pkg/linux_amd64/github.com/labstack中

golang学习笔记 go 相关命令的更多相关文章
- go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量
go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...
- docker学习笔记-容器相关命令
新建并启动容器 docker pull centos (先下载镜像,如果没有直接使用docker run 命令会根据本地情况进行下载) # docker run [可选参数] image # 参数说明 ...
- golang学习笔记8 beego参数配置 打包linux命令
golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...
- golang学习笔记5 用bee工具创建项目 bee工具简介
golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ...
- golang学习笔记19 用Golang实现以太坊代币转账
golang学习笔记19 用Golang实现以太坊代币转账 在以太坊区块链中,我们称代币为Token,是以太坊区块链中每个人都可以任意发行的数字资产.并且它必须是遵循erc20标准的,至于erc20标 ...
- golang学习笔记18 用go语言编写移动端sdk和app开发gomobile
golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...
- golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换
golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...
- golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息
golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放 ...
- golang学习笔记7 使用beego swagger 实现API自动化文档
golang学习笔记7 使用beego swagger 实现API自动化文档 API 自动化文档 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/doc ...
随机推荐
- Red Hat安装虚拟带库
1.安装五个包 # yum -y install lzo-devel sg3_utils lsscsi mtx mt-st mtx源码:http://sourceforge.net/ 2.下载最新版的 ...
- python从入门到放弃之进程
在理解进程之前我们先了解一下什么是进程的概念吧 以下就是我总结的一些基本的进程概念 进程就是正在运行的程序,它是操作系统中,资源分配的最小单位(通俗易懂点也就是电脑给程序分配的一定内存操作空间).资源 ...
- Mongodb分片 学习小结
前一篇 https://www.cnblogs.com/frx9527/p/mongodb.html 学会搭建复制集Replication之后,就可以学习分片Sharding了. 教程建议看官方文档: ...
- 用户交互Scanner的用法
Java用户交互的目的是实现程序与人的交互:一般通过Scanner来获取用户的输入:java.util.Scanner 是Java5的新特征. 基本语法: Scanner s=new Scanner( ...
- jmeter压测学习8-压测带token的接口
前言 工作中我们需要压测的接口大部分都是需要先登陆后,带着token的接口(或者带着cookies),我们可以先登陆获取token再关联到下个接口. 比如我现在要压测一个修改用户的个人信息接口,每个用 ...
- 201871010112-梁丽珍《面向对象程序设计(java)》第十一周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- SQLAlchemy查询数据库数据
首先创建模型,在数据库里面生成表,然后填入数据,如下 # 定义orm,数据模型 class Test(db.Model): __tablename__ = 'test' id = db.Column( ...
- 整合SpringTask实现定时任务
一.框架介绍 SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用. 二.Corn表达式 概述 Cron表达式是一个字符串,包括 ...
- JDOJ 1946 求最长不下降子序列个数
Description 设有一个整数的序列:b1,b2,…,bn,对于下标i1<i2<…<im,若有bi1≤bi2≤…≤bim 则称存在一个长度为m的不下降序列. 现在有n个数,请你 ...
- Spring Boot中以代码方式配置Tomcat
在Spring Boot2.0以上配置嵌入式Servlet容器时EmbeddedServletContainerCustomizer类不存在,经网络查询发现被WebServerFactoryCusto ...