Go 学习笔记4 - Go Module 模块及依赖管理

张云飞Vir · · 1821 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

概述

在写代码过程中,总要引用其他的库而产生功能模块的依赖。Go 在 版本1.1 开始提供 Module 模块化的支持。在1.4 版本后 鼓励所有用户从其他依赖性管理系统迁移到模块

模块

概念

“模块”是多个Go包 (package)的集合,将这些包作为一个整体一起进行版本控制。

“模块”记录了正确的依赖关系和依赖需要,在构建时会很便利。

总结 项目工程仓库、模块和包之间的关系:

  • 项目工程仓库 可以包含一个或多个Go模块。
  • 每个模块 可以包含一个或多个Go包。
  • 每个 包 由单个目录中的一个或多个Go源文件组成。

模块必须有个版本号,格式为:
v(major).(minor).(patch),
比如 v0.1.0, v1.2.3, or v1.5.0-rc.1.

go.mod 文件位于项目的根目录,项目也不必要放在GOPATH目录下。

初始化一个模块

在项目中开启 模块 的支持,需要手动开启。

指令格式:
go mod init 模块名
比如:

  go mod init mymod

在命令行窗口执行后,将会在当前目录下生产一个 go.mod 文件,内容如下:

module mymod

go 1.14

模块的应用更新

在goland 中,配置了上述的模块后。如果在代码里 import 了某个第三方模块,将会自动更新 go.mod 文件,比如我们在代码里添加

  package main

  import (
    "fmt"
    "rsc.io/quote"   // 假如这里新添加
  )

  func main(){
    fmt.Print("xxxxx")
    fmt.Println(quote.Hello())   // 假如这里新添加

  }

那么,你在run 或者同步工程时会发现,go.mod 发生了变化,如下:

module mymod

go 1.14

require rsc.io/quote v1.5.2

注意更新模块失败的问题:
由于网络的差别,需要添加代理。对于 Goland IDE 来说,我们打开 Preferences,在 Go > 选择 Go Modules(vgo) 在 proxy里写入 https://goproxy.cn 代理的地址,并勾选 Enable Go Modules。

image.png

要了解更多,请阅读 https://github.com/golang/go/wiki/Modules

END


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:张云飞Vir

查看原文:Go 学习笔记4 - Go Module 模块及依赖管理

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1821 次点击  
加入收藏 微博
1 回复  |  直到 2020-03-17 10:50:14
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传