Go包管理的探索与实践

栏目: Go · 发布时间: 7年前

内容简介:Go包管理的探索与实践
  • 引言:刚学 Go 没多久,但是很快我就发现了Go的一个特别坑爹的地方 —— 包管理。当然不只是GFW的问题,更多的是有的时候,每个项目使用的包的版本并不是完全一致的,而Go无法做到这一点。虽然Go1.5之后加了vendor的特性,但是我仍然觉得不够。

  • 不知道大家学过 javaphp 没?例如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

以上所述就是小编给大家介绍的《Go包管理的探索与实践》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

互联网+秋叶课堂:我的网课创业

互联网+秋叶课堂:我的网课创业

秋叶 / 北京:机械工业出版社 / 2016-3-1 / 39.0

在线教育被很多人视为 “互联网+”创业热潮中的下一个风口,越来越多的老师和创业者选择在线教育创业。本书作者秋叶老师2013年双11正式带一帮小伙伴开始在线教育创业,在短短两年内“从0到1”,累计做到了超500万元的销售业绩,成为国内Office领域在线教育运营最成功的团队之一。在这本书中秋叶老师结合自己的实战经历,向各位完整剖析了两年创业的真实复盘思考,是一本值得在线教育创业同行入手的必读书。 ......一起来看看 《互联网+秋叶课堂:我的网课创业》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试