go mod的使用

  1. go中包的介绍和定义

包就是很多golang源码的集合,Go语言为我们提供了很多内置包,如fmt、strconv、strings、sort、errors、time、encoding/json、os、io等。

种类:1、系统内置包 2、自定义包 3、第三方包

  • 系统内置包:Golang 语言给我们提供的内置包,引入后可以直接使用,如fmt、strconv、strings、sort、errors、time、encoding/json、os、io等。
  • 自定义包:开发者自己写的包
  • 属于自定义包的一种,需要下载安装到本地才能使用,比如说decimal包解决float精度丢失问题。

2 go包管理工具 go mod

在Golang1.11版本之前如果我们要自定义包的话必须把项目放在GOPATH目录。Go1.11版本之后无需手动配置环境变量,使用go mod 管理项目,也不需要非得把项目放到GOPATH指定目录下,你可以在你磁盘的任何位置新建一个项目,Go1.13以后可以彻底不要GOPATH了。

包(package)是多个Go源码的集合,一个包可以简单理解为一个存放多个.go文件的文件夹。该文件夹下面的所有go文件都要在代码的第一行添加如下代码,声明该文件归属的包。

Go 复制代码
package math

func sum(x, y int) int {
	return x + y
}

func sub(x, y int) int {
	return x - y
}
  • 一个文件夹下面直接包含的文件只能归属一个package,同样一个package的文件不能在多个文件夹下。
  • 包名可以不和文件夹的名字一样,包名不能包含-符号。
  • 包名为main的包为应用程序的入口包,这种包编译后会得到一个可执行文件,而编译不包含main包的源代码则不会得到可执行文件。

3.go中init()初始化函数

在Go 语言程序执行时导入包语句会自动触发包内部init()函数的调用。需要注意的是:init() 函数没有参数也没有返回值。init()函数在程序运行时自动被调用执行,不能在代码中主动调用它。

包的初始化执行顺序:

1.全局声明 2.init()函数 3.main()

多个包的引入顺序

4.go中的第三方包

4.1 方法1: go get包全名(全局)

Go 复制代码
go get https://github.com/shopspring/decimal

4.2 方法2:go mod download (全局)

Go 复制代码
go mod download 

依赖包会自动下载到 $GOPATH/pkg/mod目录,并且多个项目可以共享缓存的mod,注意使用go mod download的时候,需要首先在你的项目中引入第三方包

4.3 方法3:go mod vendor 将依赖复制到当前项目的vendor(本项目)

Go 复制代码
go mod vendor 

5 go mod 常见指令

go download:下载依赖的module到本地cache

go edit:编辑go.mod文件

go graph:打印模块依赖图

go init:在当前文件夹下初始化一个新的module,创建go.mod文件

tidy:增加丢失的module,去掉未使用的module

vendor:将依赖复制到vendor下

verify:校验依赖,检查下载的第三方库有没有本地修改,如果有修改,则会返回非0,否则校验成功

  1. 安装第三方包

去官方网站Go Packages - Go PackagesGo is an open source programming language that makes it easy to build simple, reliable, and efficient software.https://pkg.go.dev/

搜索我们想用的包,比如搜索一个有关json操作的包,我们进去后,找到它的GitHub - tidwall/gjson: Get JSON values quickly - JSON parser for Go,然后提供了完整的教程

Go 复制代码
go get -u github.com/tidwall/gjson

下载这个依赖

相关推荐
桃园码工2 小时前
2-测试bigcache做进程内缓存 --开源项目obtain_data测试
vscode·mysql·go·postman
ZQDesigned20 小时前
在 Windows 和 macOS 上配置 Golang 语言环境
后端·go
煎鱼eddycjy2 天前
新提案:由迭代器启发的 Go 错误函数处理
go
煎鱼eddycjy2 天前
Go 语言十五周年!权力交接、回顾与展望
go
不爱说话郭德纲3 天前
聚焦 Go 语言框架,探索创新实践过程
go·编程语言
0x派大星4 天前
【Golang】——Gin 框架中的 API 请求处理与 JSON 数据绑定
开发语言·后端·golang·go·json·gin
IT书架4 天前
golang高频面试真题
面试·go
郝同学的测开笔记4 天前
云原生探索系列(十四):Go 语言panic、defer以及recover函数
后端·云原生·go
秋落风声5 天前
【滑动窗口入门篇】
java·算法·leetcode·go·哈希表
0x派大星7 天前
【Golang】——Gin 框架中的模板渲染详解
开发语言·后端·golang·go·gin