Go Modules 是 Go 语言的官方依赖管理工具,自 Go 1.11 版本开始引入。它解决了 Go 语言在依赖管理上的一些问题,如版本控制、依赖隔离等。

初始化一个新的模块

你可以使用 go mod init [module-path] 命令来初始化一个新的模块。这将创建一个 go.mod 文件。

例如,在一个空目录下运行 go mod init github.com/yourusername/myproject

mkdir myproject
cd myproject
go mod init github.com/yourusername/myproject

这将创建一个 go.mod 文件,内容如下:

module github.com/yourusername/myproject

go 1.16

这里的 module 行声明了模块路径,go 行声明了 Go 语言的版本。

添加依赖

当你在代码中导入一个新的包并运行 go buildgo test 或其他一些命令时,Go 会自动查找并添加所需的依赖。

例如,在 main.go 中导入并使用 rsc.io/quote 包:

package main

import (
"fmt"
"rsc.io/quote"
) func main() {
fmt.Println(quote.Hello())
}

然后运行 go build,Go 将会自动下载所需的 rsc.io/quote 包,并更新 go.mod 和 go.sum 文件。

现在 go.mod 文件看起来可能像这样:

module github.com/yourusername/myproject

go 1.16

require rsc.io/quote v1.5.2

这里的 require 行声明了你的项目依赖的其他模块及其版本。

更新依赖

你可以使用 go get 命令来手动添加、更新或移除依赖。例如,要更新到 rsc.io/quote 的最新版本,你可以运行:

go get rsc.io/quote@latest

要移除一个依赖,你可以直接从 go.mod 文件中删除对应的 require 行,然后运行 go mod tidy

依赖隔离

每个 Go Modules 项目都有自己的依赖,这些依赖被存储在项目路径外的一个文件夹中($GOPATH/pkg/mod),每个项目都不会影响到其他项目,实现了依赖的隔离。

总的来说,Go Modules 是 Go 语言的官方依赖管理工具,它提供了一种便捷的方式来管理你的 Go 项目的依赖。理解和熟练使用 Go Modules 是提高 Go 语言开发效率的关键。

推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

【go语言】2.4.3 Go Modules的更多相关文章

  1. ICE学习第三步-----Slice语言

    ICE:Slice语言(一)-编译 Introduce简介 Slice(Specification language for ice)是分离对象和对象的实现的基础的抽象机制.Slice在客户端和服务器 ...

  2. thinkphp下多语言

    这里指定2种语言 ,zh-cn 和 zh-tw 1.在配置文件中写入 'LANG_SWITCH_ON' => true, // 开启语言包功能 'LANG_AUTO_DETECT' => ...

  3. 08. Go 语言包(package)

    Go 语言包(package) Go 语言的源码复用建立在包(package)基础之上.Go 语言的入口 main() 函数所在的包(package)叫 main,main 包想要引用别的代码,必须同 ...

  4. Go modules基础精进,六大核心概念全解析(上)

    点击一键订阅<云荐大咖>专栏,获取官方推荐精品内容,学技术不迷路! Go 语言做开发时,路径是如何定义的?Go Mudules又为此带来了哪些改变?本文将会全面介绍Go modules六大 ...

  5. 在C#中调用VBScript和JavaScript等脚本的实现

    在C#中调用VBScript.JavaScript等脚本的实现 作者:郑佐 2004-04-26 以前在做工作流(workflow)项目的时候,里面有一项就是在用户制定流程定义时可以编写脚本来控制活动 ...

  6. 定制CentOS (Redhat AS 5.1)安装盘

    CentOS(Redhat)提供了一套完整的自动化安装机制,利用该机制,我们可以自己定制无人值守的自动安装光盘,也可以进行系统裁减,甚至可以以CentOS为基础制作自己软件系统的系统安装盘.以下全部内 ...

  7. PHPCMS v9构建模块 - 实例之企业服务模块

    下面开始第一个实例,企业服务模块,这是个比较简单的模块,做一个抛砖的作用.   模块功能分析:企业服务,企业填写招聘申请表,管理审核之后,展示作为招聘通知的功能.   ■1.文件分布 modules文 ...

  8. C# winForm中调用javascript文件中的方法

    目前有很多的SNS社区或类SNS的网站,例如开心.51.校内等,但是发现大多数社区在邀请好友的时候都没有提供对QQ邮箱或者QQ空间好友列表获取的功能,不过似乎海内支持,但是网上相关QQ的文章还不是很多 ...

  9. javascript 基础知识汇总(一)

    1.<script> 标签 1) 可以通过<script> 标签将javaScript 代码添加到页面中 (type 和language 属性不是必须的) 2)外部的脚本可以通 ...

  10. 转载:VScode 好用插件集合

    --------------------- 作者:JayveeWong 来源:CSDN 原文:https://blog.csdn.net/weixin_42776111/article/details ...

随机推荐

  1. Win Pycharm + Appium + 夜神模拟器 实现APP自动化

    前言: 之前的文章已经介绍完通过使用 真机 进行APP自动化.此篇文章将介绍使用 夜神模拟器(Nox) 进行APP自动化测试. 一.基础配置 1.请移步此篇文章(https://www.cnblogs ...

  2. SQLite3数据库的介绍和使用(面向业务编程-数据库)

    SQLite3数据库的介绍和使用(面向业务编程-数据库) SQLite3介绍 SQLite是一种用C语言实现的的SQL数据库 它的特点有:轻量级.快速.独立.高可靠性.跨平台 它广泛应用在全世界范围内 ...

  3. 关于java中的super

    首当其冲先说一下super的用途和含义.他是用于调用一些被重写的方法. 这里还可以复习一下子这个重写:重写是把新的方法放在被重写的方法前面.在被重写的子类中,优先调用重写后的方法.但是如果想要调用原本 ...

  4. Prism Sample 19-NavigationParticipation

    Navigation Participation,不知翻译方法,意思是对导航过程的参与,触发事件,类似离开导航目标和进入导航的回调 在VM中,增加一个接口 ,然后实现导航事件 public class ...

  5. ChatGPT 打字机效果原理

    一.背景 在初次使用 ChatGPT 时,我就被打字机的视觉效果吸引.总是感觉似曾相识,因为经常在一些科幻电影中看到,高级文明回传的信息在通讯设备的屏幕上以打字机效果逐步出现,在紧张的氛围下,输出人类 ...

  6. @GrpcServise 注解的作用和使用

    转载请注明出处: 1. @GrpcServise 的作用和优势 在没有使用 @GrpcServise 注解编写服务端时,我们通常需要自定义 Server 以及端口,包括 start,stop ,注册s ...

  7. UCOS-II 任务栈空间合理分配

    最近利用空闲时间跑了一下正点原子的stm32f4开发板的实时操作系统demo,发现了一个比较有意思的东西,分享如下: 硬件平台:正点原子stm32f4开发板 软件开发平台:MDK uVision v5 ...

  8. 2013年蓝桥杯C/C++大学B组省赛真题(马虎的算式)

    题目描述: 小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了. 有一次,老师出的题目是:36 x 495 = ? 他却给抄成了:396 x 45 = ?  但结果却很戏剧性,他的答案竟然是 ...

  9. npm run serve/build 背后的真实操作

    vue CLI 用起来的确很舒服,方便省事,但他经过层层封装很难明白,执行完那个npm run serve/build 后他都干了些什么,甚至不知道整个项目是怎么跑起来的,今天自己抽时间就去瞅瞅,为加 ...

  10. weex 开发APP 多行文本溢出处理

    weex中文字溢出不能使用常规的overflow:hidden 如: .text { overflow: hidden; text-overflow: ellipsis; white-space: n ...