目录


一、包的定义

包(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. 根据三方包文档使用