go语言 第三方包安装方法_【分享吧】Go语言第三方包的使用介绍与场景应用

Go语言是一种跨平台(Mac OS、Windows、Linux 等)的静态编译型语言。拥有媲美C语言的强大性能,支持静态类型安全,在普通计算机上能几秒内快速编译一个大项目,开发效率跟动态语言相差无几。

Go语言在国内拥有非常活跃的社区,未来发展十分看好。当前Go语言主要应用于后端服务的开发,未来随着Go项目的完善,在系统、游戏、UI界面、AI、物联网等领域,都将被广泛使用。

当我们在开发实现中需要引入第三方包的解决方案的时候,就需要对于Go语言第三方包进行下载,引入及版本管理。Go语言拥有很多优秀的第三方包,在后端技术的解决方案上面,第三方包的使用可以实现相应功能需求,而且便于安装与引用。

5f64d0df60eec0fae084e6d5cb28d217.png

01

管理及使用

    1、第三方包的安装

   (1)使用go get 安装

在互联网环境下,可以直接通过go get命令进行第三方包的安装。

比如要安装 github.com/gin-gonic/gin 则可以通过以下命令:

b3a10b4958c43fbbe32bd2a08a3a70a7.png

需要注意的是,执行go get 命令需要先安装git命令,并配置好git全局变量。

(2)使用源码包安装

 由于国内网络问题,很多时候go get命令并不能安装,所以就需要到github.com网站上面手动下载源码包,然后拷贝到相应的工程目录中进行引用。

比如要安装 github.com/golang/protobuf/proto

需要去github.com/golang/protobuf下载源码包,解压之后拷贝到工程目录中,以供以后程序开发及编译时使用。

需要注意的是,GO 和Java 不同,所有import的包必须在%GOPATH路径下,如果直接导入源码路径下的包,编译会报错。因为GO只会在$GOPATH 下找包的依赖,而不会在当前工程下找。如果新加入的第三方包是与工程目录脱离,则在使用或编译之前需要将第三方包所在的目录加入到$GOPATH中。

2、管理办法

第三方包的管理方案有很多种,之前出现过dep和vendor。但是自从在1.11版本初步引入GoModule模块之后,1.12版本开始正式支持。GoModule是官方提供的包管理解决方案。通过GoModule,开发者可以把工程放在GOPATH之外的位置,使管理更加灵活。

使用GoModule管理依赖后会在项目根目录下生成两个文件go.mod和go.sum。

(1)变量设置

要启用GoModule支持首先要设置环境变量GO111MODULE,通过它可以开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是auto。

设置GO111MODULE=on之后就可以使用GoModule了,编译时会忽略GOPATH和vendor文件夹,只根据go.mod下载依赖。

 因为需要互联网环境进行管理,在国内网络环境下,部分第三方包无法正常下载,所以建议设置代理参数GOPROXY,推荐设置为https://goproxy.cn。

 (2)常用命令

   初始化相关的命令如下:

e8179527a7e967ebbfdd66357946e011.png

通过go mod init命令初始化当前文件夹, 创建go.mod文件。go.mod文件记录了项目所有的依赖信息,文件内容大致如下:

a6f36e7674eabcb00b6ed1c4abbb1a2c.png

其中,module用来定义包名,require用来定义依赖包及版本,indirect表示间接引用。

    (3)管理依赖包

     在项目中执行go get命令可以下载依赖包,并且还可以指定下载的版本。

af69fecaea52a63e5316d4752fe8c153.png

如果下载所有依赖可以使用go mod download命令。

我们在代码中删除依赖代码后,相关的依赖包并不会在go.mod文件中自动移除。这种情况下我们可以使用go mod tidy命令更新go.mod中的依赖关系。

如果需要对一个已经存在的项目启用GoModule,可以按照以下步骤操作:

3614ca1c558ffe2cd66424532a541d7a.png

3、引用方式

在应用程序中直接import即可。

比如要使用 github.com/gin-gonic/gin 则在引用文件中使用以下引用代码即可:

1b2a078523a6ad471640d91ed618cfbe.png

02

介绍与应用

下面介绍几类常用的第三方包的使用场景及应用示例。

1、数据加密

github.com/ZZMarquis/gm

使用场景:实现国密SM2/SM3/SM4算法;实现SM2 X509v3证书签发和解析。

 开源代码Star数:★96

 使用方式:

 国密sm3加密实现,示例如下:

40a5a7535ec6ddd5ad54c59b3bc8b2ac.png

国密sm4加密实现,示例如下:

f4c6ff8fbaaf1417da1152faf6913ae7.png

     golang.org/x/crypto

    使用场景:crypto密码学的补充包。Pbkdf2非对称算法的go实现。

    开源代码Star数:★1.7K

    使用方式:

    Pbkdf2非对称算法,示例如下:

0ce3018d176a12b9b325cde710976351.png

    2、文件读取

    github.com/spf13/viper

    使用场景:获取配置文件内容。

    开源代码Star数:★11.4K

    使用方式:

    配置文件内容如下:

8327ccbd63b7f4dc211551529129ae7a.png

    配置文件内容读取,示例如下:

46ab87c41f666e51e92c477c298b0ab1.png

     github.com/spf13/cast

     使用场景:获取配置文件列表内容。

     开源代码Star数:★858

     使用方式:

     配置文件内容如下:

8f90e62f79e7c5fca563f7dae5d38c6b.png

    配置文件内容读取,示例如下:

d49559205abf6749c5c4a7c3514363c0.png

    github.com/LindsayBradford/go-dbf/godbf

    使用场景:dbf文件内容解析。

    开源代码Star数:★50

    使用方式:

    dbf文件内容解析,示例如下:

7371d92253f66de83007a18b79a1c8f3.png

3、信息通信

github.com/golang/protobuf/proto

使用场景:protobuf支持的补充包。

开源代码Star数:★6.3K

使用方式:通过protoc-gen-go文件指令进行proto文件编译生成的go文件内部使用

protobuf结构解析,示例如下:

47c57d9b5c2e142cb3af3fac03556ddc.png

github.com/dgrijalva/jwt-go

使用场景:进行token生成及管理。

开源代码Star数:★7.2K

使用方式:

token管理,示例如下:

d6485ea624d3b5deb615d089b4a283a3.png

github.com/gorilla/websocket

使用场景:创建websocket链接。

开源代码Star数:★11.3K

使用方式:

创建websocket链接,示例如下:

27e6eeeabadc9cee44bd4955c889b5ec.png

4、数据库操作

github.com/mattn/go-sqlite3

使用场景:xorm推荐的sqlite数据库driver包。

开源代码Star数:★3.9K

使用方式:

初始化数据库,示例如下:

4db861c697d1f113740a3c06e1ce2127.png

github.com/mattn/go-oci8

使用场景:xorm推荐的oracle数据库driver包。

开源代码Star数:★3.9K

使用方式:

初始化数据库,示例如下:

c10258be45f24b653cfccb1e9917bcd4.png

github.com/go-sql-driver/mysql

使用场景:xorm推荐的mysql数据库driver包。

开源代码Star数:★9.3K

使用方式:

初始化数据库,示例如下:

bce8ab8517f553b03b7e99b9ffa28eec.png

5、基础框架包

除了以上提到的Go语言第三方包之外,还有一些比较常用的基础框架包,比如:

github.com/gin-gonic( 高性能的web 框架)

github.com/go-xorm(gin web框架推荐使用的ORM数据库中间件)

google.golang.org/grpc(grpc协议通信)

由于应用比较广泛,范例也比较多,此处不再冗述。

03

总结

 开源包的引入在一定程度上解决了日常开发的方案需求,但是加入开源包的使用也对项目开发带来了一定的风险。在对开源包进行使用之前,一定要对开源包的功能、版本以及使用评价有一定的了解。

●  可通过开源网站的访问量、星级标识及更新时间进行质量评估,翻看更新记录及反馈查看使用情况。

●  可通过GoModule管理方案进行版本管理,并跟踪最新版本更新情况。

●  可通过开源包中的test文件查看使用方式,查看内部逻辑,对于代码结构设计可以深入研究了解,必要的时候可按照实际情况进行维护。

在对开源包方案进行选型的时候,要对内部的实现逻辑进行充分的了解和研究,防止增加项目的不确定风险。引入开源包之后需要定时去关注版本变化,监控是否发现或解决了某些严重缺陷,或者升级优化了某些功能。最终确保做到可使用可维护,能够不留后患的解决问题。

623f0dd93c236932fa9603d7075a870c.png
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值