目录
一、包的定义
包(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拥有一个默认:https://proxy.golang.org,direct,而且很可惜 proxy.golang.org 在中国无法访问。这也是我们依赖下载时一直timeout的原因。
解决方法:在命令行输入 go env -w GOPROXY=https://goproxy.cn,direct,即可正常拉取依赖
3. 根据三方包文档使用