go websocket游戏框架_【分享吧】Go语言第三方包的使用介绍与场景应用

本文介绍了Go语言第三方包的管理与使用,包括通过go get命令安装、GoModule模块管理,以及数据加密、文件读取、信息通信、数据库操作等场景的应用示例。涉及的库如gin-gonic、protobuf、websocket和多种数据库driver。
摘要由CSDN通过智能技术生成

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

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

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

d73badc1429834dfa6618a131148fb8b.png

01

管理及使用

    1、第三方包的安装

   (1)使用go get 安装

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

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

ff6353a27f10fc316bc39e5afeb7529d.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)常用命令

   初始化相关的命令如下:

7d7be11691503c001ecb89f48b7dccf9.png

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

3f14ff33d9fe0964789b144c6697ca87.png

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

    (3)管理依赖包

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

3ec93940a4488ff97d9f6e5ae813cb02.png

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

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

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

09ac26f093e411d35b7e350fd1760c23.png

3、引用方式

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

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

3be5274365e911e71f3dcaba423ad7d4.png

02

介绍与应用

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

1、数据加密

github.com/ZZMarquis/gm

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

 开源代码Star数:★96

 使用方式:

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

608493293b3df87e028ace5a919e3ceb.png

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

48bad57c2348b5bfdc5dfc3c648cd3bd.png

     golang.org/x/crypto

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

    开源代码Star数:★1.7K

    使用方式:

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

d5348d03461e8045559eb727012490b7.png

    2、文件读取

    github.com/spf13/viper

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

    开源代码Star数:★11.4K

    使用方式:

    配置文件内容如下:

a8a37fbfef800da9baee115f8f4ad64a.png

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

3e0df200ba1132a08e0ee164cf228cc0.png

     github.com/spf13/cast

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

     开源代码Star数:★858

     使用方式:

     配置文件内容如下:

476935b57c08113eb09593431eef4bcc.png

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

264c269871ab21dc460e9e351e7f9977.png

    github.com/LindsayBradford/go-dbf/godbf

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

    开源代码Star数:★50

    使用方式:

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

8d029f3205d2a5f598faba532641fb3c.png

3、信息通信

github.com/golang/protobuf/proto

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

开源代码Star数:★6.3K

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

protobuf结构解析,示例如下:

1cd0356368107e571f568edb31b45a96.png

github.com/dgrijalva/jwt-go

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

开源代码Star数:★7.2K

使用方式:

token管理,示例如下:

d23b29b0d74996fa7ef0123fccbc32a6.png

github.com/gorilla/websocket

使用场景:创建websocket链接。

开源代码Star数:★11.3K

使用方式:

创建websocket链接,示例如下:

2a8106b670d762079ed2c2edcf0d80b4.png

4、数据库操作

github.com/mattn/go-sqlite3

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

开源代码Star数:★3.9K

使用方式:

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

ae5983dd3ce852e222855e8346f81a26.png

github.com/mattn/go-oci8

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

开源代码Star数:★3.9K

使用方式:

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

64844f55593b805feb8cbe72b19152f6.png

github.com/go-sql-driver/mysql

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

开源代码Star数:★9.3K

使用方式:

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

0074e72347ae5da456b4e351a094f157.png

5、基础框架包

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

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

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

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

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

03

总结

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

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

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

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

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

5d3e2d619319b31f5d35f0148b3d9c71.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值