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包管理的探索与实践》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Iterative Methods for Sparse Linear Systems, Second Edition

Iterative Methods for Sparse Linear Systems, Second Edition

Yousef Saad / Society for Industrial and Applied Mathematics / 2003-04-30 / USD 102.00

Tremendous progress has been made in the scientific and engineering disciplines regarding the use of iterative methods for linear systems. The size and complexity of linear and nonlinear systems arisi......一起来看看 《Iterative Methods for Sparse Linear Systems, Second Edition》 这本书的介绍吧!

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

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

html转js在线工具
html转js在线工具

html转js在线工具