Go包管理的探索与实践
时间:2022-05-06
本文章向大家介绍Go包管理的探索与实践,主要内容包括从头说起、Glide 的安装、Mac 用户、Glide 的使用、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
- 不知道大家学过java、php没?例如maven、composer都是很好用的包管理工具。你可以针对每个项目建立一个包管理文件,并对每个依赖项进行版本控制。这是我需要的。并可以在项目的根目录生成lock文件,在安装依赖后,把安装时确切的版本号列表写入 lock 文件中。可以锁定该项目的特定版本。
从头说起
- Go原始的包管理是通过
go get
命令,从远程仓库拉取并放到环境变量中的src
文件夹中。开发的时候通过路径使用import
关键字导入。就像这样:
//最简单的方式引入一个包的方式是直接引入包,例如:
import "fmt"
import "os"
//也可以通过下面的方式将包一块引入,并写在括号内:
import (
"fmt"
"os"
)
- 实际上
go get
相当于两个命令,分别是:git clone
go install
- 例如获取第三方包
go get github.com/llimllib/loglevel
,然后在项目中这么用:
import (
log "github.com/llimllib/loglevel"
)
- 是不是觉得特别坑爹?我也觉得。显然接下来我要给你们介绍一个我认为特别牛逼的可以颠覆这些复杂的操作的包管理工具。
- 那就是大名鼎鼎的glide
Glide 的安装
Linux 用户
curl https://glide.sh/get | sh
Mac 用户
brew install glide
Glide 的使用
- 进入项目根目录执行
glide create
创建glide.yaml - 通过
glide get github.com/llimllib/loglevel
获取第三方包 - 执行完前两个步骤,你会发现项目根目录出现了
glide.yaml
文件,文件里面的内容如下:
package: demo01
import:
- package: github.com/llimllib/loglevel
- 这种情况下,默认不指定安装该第三方包的版本。默认拉取master的代码。
- 当你想更新该第三方包的代码时,执行
glide up
即可 - 如果你想指定版本号,那么可以这么写:
package: demo01
import:
- package: github.com/llimllib/loglevel
version: ^1.2.0
- 当然你可以对这个包指定一个仓库地址通过参数repo解决
package: demo01
import:
- package: github.com/llimllib/loglevel
version: ^1.2.0
repo: git@github.com:llimllib/loglevel.git
- 记住,若是指定版本号和仓库地址的话,你需要执行
glide install
- 更多有关glide的知识,可以参考
- 完美~有什么不对的地方,请大家指正,毕竟是初学Golang。
- 检测常见ASP.NET配置安全漏洞
- Flash/Flex学习笔记(56):矩阵变换
- js小技巧:tab页切换
- c#字符串操作方法实例
- Android中Fragment+ViewPager的配合使用
- 结合机器学习与生物医学技术,寻找Uber司机出行模式
- ASP.NET MVC 4 - 测试驱动 ASP.NET MVC
- LVS+Keepalived高可用环境部署梳理(主主和主从模式)
- 随着区块链的火爆,相关顶级域名“矿池”KC.com已建站
- Flash/Flex学习笔记(50):3D线条与填充
- LVM常规操作记录梳理(扩容/缩容/快照等)
- Flash/Flex学习笔记(55):背面剔除与 3D 灯光
- 资源等待类型sys.dm_os_wait_stats
- NVIDIA不再允许数据中心用GeForce驱动,提供区块链服务除外
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法