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

概述

在写代码过程中,总要引用其他的库而产生功能模块的依赖。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。

2044033-153bbd8bfa356d49.png
image.png

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

END

发布了253 篇原创文章 · 获赞 7 · 访问量 9万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览