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

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

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

01

管理及使用

    1、第三方包的安装

(1)使用go get 安装

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

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

需要注意的是,执行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)常用命令

初始化相关的命令如下:

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

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

(3)管理依赖包

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

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

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

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

3、引用方式

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

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

02

介绍与应用

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

1、数据加密

github.com/ZZMarquis/gm

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

开源代码Star数:★96

使用方式:

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

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

golang.org/x/crypto

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

开源代码Star数:★1.7K

使用方式:

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

    2、文件读取

github.com/spf13/viper

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

开源代码Star数:★11.4K

使用方式:

配置文件内容如下:

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

github.com/spf13/cast

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

开源代码Star数:★858

使用方式:

配置文件内容如下:

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

github.com/LindsayBradford/go-dbf/godbf

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

开源代码Star数:★50

使用方式:

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

3、信息通信

github.com/golang/protobuf/proto

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

开源代码Star数:★6.3K

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

protobuf结构解析,示例如下:

github.com/dgrijalva/jwt-go

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

开源代码Star数:★7.2K

使用方式:

token管理,示例如下:

github.com/gorilla/websocket

使用场景:创建websocket链接。

开源代码Star数:★11.3K

使用方式:

创建websocket链接,示例如下:

4、数据库操作

github.com/mattn/go-sqlite3

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

开源代码Star数:★3.9K

使用方式:

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

github.com/mattn/go-oci8

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

开源代码Star数:★3.9K

使用方式:

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

github.com/go-sql-driver/mysql

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

开源代码Star数:★9.3K

使用方式:

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

5、基础框架包

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

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

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

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

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

03

总结

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

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

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

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

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

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

  1. go语言 第三方包安装方法_安装第三方软件到电视的方法,看直播应该下载什么软件?...

    现在市场上的智能产品越来越多,尤其是手机和电视,虽然电视的内容很多,但是还是有很多人不知道怎么在电视上看到免费.高清又稳定的电视直播节目,其实方法很简单,首先大家需要了解一下电视怎么下载软件看直播. ...

  2. python安装方法_听说你安装Python包很慢,试试这个方法

    使用Python有快五年了,最近这一年多,经常听到大家说在安装python第三方包很慢很慢.比如这速度,每秒十几kb而网络正常的情况下,pip下载的速度至少应该每秒几百kb才对,甚至还有可能更快,比如 ...

  3. mysql.8.0.13ZIP安装教程_关于mysql 8.0.13zip包安装方法

    mysql 8.0.13默认有一个data文件夹,这个文件夹得删了,不然安装服务时候会有日志文件提示报错: Failed to find valid data directory. Data Dict ...

  4. python第三方库安装方法-Python第三方库安装

    Python有一个全球社区:https://pypi.org/,在这里我们可以搜索任何主题的Python第三方库.PyPI全称是Python Package Index,指的是Python包的索引,它 ...

  5. Redhat linux 安装 gcc编译器,Gcc源码包,rpm包安装方法!

    点评:分两种情况: 先看这篇转过来的文章,俺老孙懒得写了. Linux软件安装通用思路 在Linux系统中,软件安装程序比较纷繁复杂,不过最常见的有两种: 1)一种是软件的源代码,您需要自己动手编译它 ...

  6. 134安装教程_PS教程连载第135课:PS第三方插件安装方法

    点击图片  1元抢购  PS.PR.AE等课程活动 PS教程连载第135课 PS第三方插件安装方法 格式:mp4视频 素材领取:请查看文章底部 现在有许多外挂滤镜开发商将滤镜的安装程序设计的非常人性化 ...

  7. 如何在vsc上下载php扩展包,正确的 Composer 扩展包安装方法

    问题说明 我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 com ...

  8. composer php 扩展,正确的Composer扩展包安装方法

    下面由composer教程栏目给大家介绍正确的 Composer 扩展包安装方法,希望对需要的朋友有所帮助! 问题说明 我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文 ...

  9. gitlab rpm包安装方法

    gitlab rpm包安装方法 当前安装方式适合centOs7版本,需要有root权限,如果当前用户不是root用户,需要配置当前用户的sudo 1. yum install -y curl poli ...

最新文章

  1. CentOS 安装Apache
  2. 三框架:使用数据源dbcp注意
  3. 软件系统非功能测试方法,非功能测试方案模板
  4. mysql 导入 相对路径,MySQL数据库导出与导入及常见错误解决
  5. Raft协议安全性保证
  6. 信息学奥赛一本通 2043:【例5.11】杨辉三角形
  7. 熊猫to_csv()–将DataFrame转换为CSV
  8. 机器学习第3周:算法学习
  9. MySQL中char、varchar和text的区别
  10. ACCESS实例1——简易文档管理器
  11. 通过MFC实现数码管显示功能
  12. mysql 查找入职时间最早_查找入职员工时间排名倒数第三的员工所有信息SQL
  13. mysql超卖问题处理_高并发下超卖问题及如何解决
  14. 1526 B. I Hate 1111
  15. 东周列国志美文摘录-晏平仲巧辩服荆蛮
  16. C#程序设计之windows应用程序设计基础
  17. 【已解决】【高速版】如何显示(扫描)局域网中所有的在线主机IP及MAC地址?
  18. 与人交往哪些心态不行
  19. 论文笔记 Inference in Deep Gaussian Processes using Stochastic Gradient Hamiltonia使用随机梯度哈密顿量蒙特卡罗推理深度高斯过程
  20. 区块链+游戏新玩法:BitRichman--游戏与现实的联动

热门文章

  1. 研究生期间如何做研究:一些建议
  2. 服务器维修故障诊断思路大全
  3. RPM软件包和YUM软件仓库的实例
  4. c语言键位大全,按键用法
  5. windows7 安装哪个版本的vs_门套安装45度拼接VS直角拼接,哪个更好?
  6. SOEM 源码解析 ecx_map_sii
  7. micropython 蓝牙音箱_Arduino从入门到创客带师(-1)—Hello World!
  8. Google URL Shorter
  9. mysql数据库的简介(安装和卸载)
  10. Windows自定义开关机的音乐