目录
一、包的定义
二、包管理工具 go mod
1. go mod init 初始化项目
2. golang中自定义包
3. 自定义包别名
4. init魔术方法的执行顺序
三、golang中使用第三方包
1. 查找第三方包
2. 安装第三方包
3. 根据三方包文档使用
一、包的定义
包(package)是多个 Go 源码的集合,是一种高级的代码复用方案,Go 语言为我们提供了 很多内置包,如 fmt、 strconv 、strings、sort、errors、time、encoding/json、 os 、io 等。
Golang 中的包可以分为三种: 1、系统内置包 2、自定义包 3、第三方包
系统内置包 : Golang 语言给我们提供的内置包,引入后可以直接使用,如 fmt、strconv、strings、 sort、errors、time、encoding/json、os、io 等。
自定义包 :开发者自己写的包
第三方包 :属于自定义包的一种,需要下载安装到本地后才可以使用,如前面给大家介绍的 “github.com/shopspring/decimal”包解决 float 精度丢失问题。
二、包管理工具 go mod
1. go mod init 初始化项目
进到项目根文件夹执行: go mod init xxx(一定是项目名)
执行完之后,此时在项目中就会有个 go.mod 文件
2. golang中自定义包
golang根目录要有一个main.go文件,并且 package main 也要有。
引用calc包里面的Add和Sub方法
注意:Add和Sub都是首字母大写都是公有方法,可以在其他包内使用;如果首字母小写,那就是私有方法,在其他包内无法使用。
可以看到我项目中还有tools包,firstTest、secondTest都是自定义的包,均可以在main.go中引用。
3. 自定义包别名
tools文件夹下新建了两个文件print.go和test.go
在main中引用tools包时定义了T为包的别名
4. init魔术方法的执行顺序
init函数介绍:
在 Go 语言程序执行时导入包语句会自动触发包内部 init()函数的调用。需要注意的是:init() 函数没有参数也没有返回值。 init()函数在程序运行时自动被调用执行,不能在代码中主动 调用它。
项目中有main.go和firstTest和secondTest。然后引用方式为:main引用first,然后first引用second。最终的执行顺序为second–》first–》main
三、golang中使用第三方包
1. 查找第三方包
go语言的第三方包地址:pkg.go.dev =》
搜索float精度包decimal
2. 安装第三方包
三种方式:1 go get 2 go mod download 3 go mod vendor
go mod 具体命令
命令详解
插曲:使用go get 地址的时候 会出现timeout错误,这是因为GOPROXY拥有一个默认:,而且很可惜 proxy.golang.org 在中国无法访问。这也是我们依赖下载时一直timeout的原因。
解决方法:在命令行输入 go env -w GOPROXY=即可正常拉取依赖