go module学习笔记

背景

golang 的版本管理历史复杂,各种方式并存让入门开发者的理解程度增加很多。使用go近3个月,感觉还没有搞懂依赖包的版本管理。

个人建议,新手学go,先不要去理会历史上的三方包管理方式,什么gopath管理方式和vendor管理方式,直接看go mod管理方式即可(目前绝大多数go应用,已经用go mod进行包管理了),如果没有人指点,前面两种方式会对第三种方式的理解产生额外的干扰。等go mod方式搞明白,如果有兴趣,可以再去理解下历史长河中的包管理方式

官网翻译记录

以下翻译自官网

模块、包、版本

  1. 模块(module) 是多个包(package)的集合,这些包是有版本的,且一起被发布的;模块可以直接从版本控制仓库下载,也可以从模块代理服务器下载
  2. 一个模块有唯一的模块路径(module path),模块路径在go.mod文件中声明(同时会包括这个模块的依赖们)。
    • 模块根路径root directory 是包含go.mod文件的目录
    • 主模块main module 是那个包含运行go命令目录的模块
  3. 包(package) 是模块中,在同一个目录中的源码文件的集合。包路径是模块路径 + 包的子目录,举例:
    • 模块路径golang.org/x/net,其中包含一个包目录html,那么这个包路径就是golang.org/x/net/html

版权声明:本文为qq_39679639原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。