前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 学习笔记4 - Go Module 模块及依赖管理

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

作者头像
张云飞Vir
发布2020-03-20 12:47:25
8260
发布2020-03-20 12:47:25
举报
文章被收录于专栏:写代码和思考写代码和思考

概述

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

代码语言:javascript
复制
  go mod init mymod

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

代码语言:javascript
复制
module mymod

go 1.14

模块的应用更新

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

代码语言:javascript
复制
  package main

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

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

  }

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

代码语言:javascript
复制
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。

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

END

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 模块
    • 概念
      • 初始化一个模块
        • 模块的应用更新
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档