golang中级进阶(三):go mod 和 golang包

本文详细介绍了Go语言中的包管理,包括包的定义、自定义包、包别名以及init方法的执行顺序。同时,重点讲解了如何使用gomod进行项目初始化和管理自定义及第三方包,特别是第三方包的查找、安装与使用方法。通过实例演示了goget、gomoddownload和gomodvendor命令的使用,并提到了解决依赖下载问题的技巧。
摘要由CSDN通过智能技术生成

目录

一、包的定义

二、包管理工具 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拥有一个默认:https://proxy.golang.org,direct,而且很可惜 proxy.golang.org 在中国无法访问。这也是我们依赖下载时一直timeout的原因。

解决方法:在命令行输入 go env -w GOPROXY=https://goproxy.cn,direct,即可正常拉取依赖

 

 

 

3. 根据三方包文档使用

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值