【Go专家编程】go module机制之基本概念

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

在开始学习module机制之前,我们有必要初步了解一下其涉及的基本概念,比如到底什么是module等。

Module的定义

首先,module是个新鲜又熟悉的概念。新鲜是指在以往GOPATH和vendor时代都没有提及,它是个新的词汇。
为什么说熟悉呢?因为它不是新的事物,事实上我们经常接触,这次只是官方给了一个统一的称呼而矣。

拿开源项目https://github.com/blang/semver举例,这个项目是一个语义化版本处理库,当你的项目需要时可以在你的项目中import,比如:

"github.com/blang/semver"

https://github.com/blang/semver项目中可以包含一个或多个package,不管有多少package,这些package都随项目一起发布,即当我们说github.com/blang/semver某个版本时,说的是整个项目,而不是具体的package。此时项目https://github.com/blang/semver就是一个module。

官方给module的定义是:A module is a collection of related Go packages that are versioned together as a single unit.,定义非常晰,一组package的集合,一起被标记版本,即是一个module。

通常而言,一个仓库包含一个module(虽然也可以包含多个,但不推荐),所以仓库、module和package的关系如下:

此外,一个module的版本号规则必须遵循语义化规范(https://semver.org/),版本号必须使用格式v(major).(minor).(patch),比如v0.1.0v1.2.3v1.5.0-rc.1

语义化版本规范

语义化版本(Semantic Versioning)已成为事实上的标准,几乎知名的开源项目都遵循该规范,更详细的信息请前往https://semver.org/ 查看,在此只提炼一些要点,以便于后续的阅读。

版本格式v(major).(minor).(patch)中major指的是大版本,minor指小版本,patch指补丁版本。

语义化版本规范的好处是,用户通过版本号就能了解版本信息。

除了上面介绍的基础概念以外,还有描述依赖的go.mod和记录module的checksum的go.sum等内容,
这部分内容比较多且比较复杂,在后面的章节中我们通过实际的例子逐步展开介绍,否则提前暴露过多的细节容易造成困惑而徒生挫败感。

赠人玫瑰手留余香,如果觉得不错请给个赞~

本篇文章已归档到GitHub项目,求星~ 点我即达

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看