首页 > 其他分享 >go.mod 浅谈理解

go.mod 浅谈理解

时间:2023-08-24 21:26:32浏览次数:33  
标签:文件 依赖 浅谈 Go 模块 go mod

go.mod

对于上次接触 golang 这门语言还是在上次了,最近对 zig 比较感兴趣,而突然折腾回 golang 的时候发现这玩意在1.1.1版本更新了一个叫go.mod的东西。

go.mod 是Go语言的官方包管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。Go.mod其实就是一个Modules,关于Modules的官方定义为:Modules是相关Go包的集合,其中包含了它们的依赖关系和版本信息,它们被组织在一起,并以一种允许Go语言编译器、测试工具和其他工具访问它们的方式进行管理。在Go语言中,使用Go.mod文件来定义项目的依赖关系,并且在编译项目时,Go会自动下载和安装所需要的依赖包及其版本信息。

除了go.mod之外,go命令还维护一个名为go.sum的文件,其中包含特定模块版本内容的预期加密哈希

go命令使用go.sum文件确保这些模块的未来下载检索与第一次下载相同的位,以确保项目所依赖的模块不会出现意外更改,无论是出于恶意、意外还是其他原因。 go.mod和go.sum都应检入版本控制。

go.sum 不需要手工维护,所以可以不用太关注。

go.mod的使用方法

1.创建 go.mod

# 在你的工程文件目录下
go mod init example.com/myproject

通过以上命令,我们会发现在项目的根目录下创建了一个名为go.mod的模块文件,里面默认有go的版本信息。这是一个关键文件,之后的包的管理都是通过这个文件管理。

2.go.mod的命令

  • module 指定包的名字(路径)
  • require 指定的依赖项模块
  • replace 可以替换依赖项模块
  • exclude 可以忽略依赖项模块

3.安装包

如果想要使用其他的包,我们需要先安装它们。

go get github.com/user/repo

随后在 go.mod 文件中添加依赖包的信息,该文件中,每个依赖包都由一个module path和一个以来版本号表示,例如:

module main

go 1.21.0

require (
    github.com/gorilla/mux v1.8.0
    github.com/lib/pq v1.10.0
)

其中,module path是该模块的地址,以来版本号是该模块的版本。require部分是该模块的依赖关系。

编译程序时,Go会自动下载和安装所需要的依赖包及其版本信息。

go build -mod vender

其中 -mod vendor 表示使用 go.mod 文件中指定的依赖包地址。

标签:文件,依赖,浅谈,Go,模块,go,mod
From: https://www.cnblogs.com/sakurair/p/17655148.html

相关文章

  • Go语言数组的使用
    目录1.数组的使用1.1数组的定义方式1:1.2数组的定义方式2:1.3数组的定义方式3:1.4数组的定义方式4:1.5数组的遍历1:1.6数组的遍历2:1.7数组的遍历3:1.8数组的遍历4:1.数组的使用1.1数组的定义方式1:packagemainimport"fmt"funcmain(){ vararr[3]string arr[0]="A......
  • Go语言切片的使用
    目录2.切片的使用2.1切片的定义方式1:2.2切片的定义方式2:2.3切片的定义方式3:2.4切片的定义方式4:2.5切片的定义方式5:2.6切片的定义方式6:遍历方式和数组差不多2.切片的使用2.1切片的定义方式1:packagemainimport"fmt"funcmain(){ varslice[]string slice=appe......
  • Go语言字典(map)的使用
    目录3.字典(map)的使用3.1字典的初始化方式1:3.2字典的初始化方式2:3.3字典的初始化方式3:3.4字典的遍历1:3.5字典的遍历2:3.6判断字典中有无某个key3.7删除字典中的某个键值对3.字典(map)的使用3.1字典的初始化方式1:packagemainimport"fmt"funcmain(){ varscoreM......
  • 解决Failed to load module canberra-gtk-module错误
    在Ubuntu环境里,通过./triangulation1.png2.png命令运行高翔的ch7的triangulation程序时报错:Gtk-Message:09:10:26.571:Failedtoloadmodule"canberra-gtk-module"查看一下模块位置:locatelibcanberra-gtk-module/usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libcanb......
  • g2o编译出现的问题及解决办法 By not providing "FindG2O.cmake" in CMAKE_MODULE_PAT
    在安装完该g2o之后运行一些程序如高翔的ch6代码会出现如下错误:CMakeWarningatCMakeLists.txt:10(FIND_PACKAGE):Bynotproviding"FindG2O.cmake"inCMAKE_MODULE_PATHthisprojecthasaskedCMaketofindapackageconfigurationfileprovidedby"G2O",bu......
  • python独立脚本应用Django项目的环境
    一、需求说明一直用Django在开发一个网站项目,其中的注册用户和登录,都是使用Django自带的认证系统。主要是对密码的加密,在注册或者登录的时候,前端传递多来的密码,我会使用Django的set_password()方法在加密一次经过加密后的数据库中的数据样子如下:......
  • golang之增加版本信息功能
    在实际开发中,当开发完一个apiserver特性后,会编译apiserver二进制文件并发布到生产环境,很多时候为了定位问题和出于安全目的(不能发错版本),我们需要知道当前apiserver的版本,以及一些编译时候的信息,如编译时Go的版本、Git目录是否clean,以及基于哪个gitcommmit来编译的。......
  • RunnerGo:一款高效且易用的性能测试工具
    在软件开发过程中,性能测试是确保应用程序能够高效运行的关键步骤。为了提供高质量的测试服务,许多企业正在寻求功能强大且易用的性能测试工具。RunnerGo是一个基于Go语言开发的性能测试平台,具有简单易用、高效稳定等特性,适用于API接口测试、场景测试、性能测试和接口自动化测试等全......
  • Go语言数字字面量
    在Go语言中,数字字面量可以用以下方式表示:二进制(Binary):使用0b或0B前缀。例如:b:=0b1010//10indecimal注意:这是在Go1.13及更高版本中引入的。八进制(Octal):使用0前缀。例如:o:=0644//420indecimal,oftenusedforfilepermissions十进......
  • 浅谈LIS
    连续上升子序列(LIS)定义\(一个序列中单调不减的子序列或单调递增的子序列(看题决定,做法几乎一致),下文以严格上升子序列为例\)做法一\(暴力dp,设f_i表示以i结尾的LIS的最长长度,f_i=max(f_j|j<i,a_j<a_i)+1。\)\(dp比较好理解,就是由上一个比当前小的数加上当前的数组成最长上升......