golang开发类库推荐
gin
star:74.6k
gin是最受开发者欢迎的 Web 框架,它有诸多的优点,性能高、轻量级和简洁的 API 设计,社区活跃度高,灵活、可扩展性强。当然了,最最主要的就是性能非常高,能够处理大量的并发请求。是web框架的不二之选。
使用体验:我们新的项目都是使用gin框架,优点很明显,高性能、轻量、灵活;缺点就是太灵活了,就缺少了很多模块,比如ORM模块、MySQL模块、Redis模块等,对初学者来说还是有一定门槛的,想直接拿着gin撸一个项目出来还是有一定难度。
gorm
star:35k
gorm是Go语言中最受欢迎的ORM(Object-Relational Mapping)框架,它提供了强大的功能和简洁的 API,让数据库操作变得更加简单和易维护,避免了手写SQL语句的麻烦。
使用体验:GO的orm使用的种类不多,只使用过gorm和beego的orm,使用感受上没有太大的区别。
beego
star:30.7k
Beego是一个开源的web框架,被广泛应用与Go语言的 web应用程序 的开发。它支持路由控制、配置管理、Session管理、日志、ORM等各种功能。它的核心设计是简单、易于学习和开发。
使用体验:beego是我们使用最多的框架,当时大多数同学都是从PHP转过来的,几乎没任何门槛,就是按照PHP的方式编写代码,只不过把语言换了一下,集成的模块比较多,配置文件解析、LOG、ORM、session等等,看它的文档很容易撸出一个新项目,初学者、跨语言的建议使用beego,感官上没有用 Go 语言的思维去设计框架,各种模块比较臃肿,性能上跟轻量型的框架还是有差距的。
cli
star:21.4k
cli提供了简单快速的构建命令行的功能。可以很容易的通过命令设定参数和配置执行业务逻辑。
使用体验:我们的crontab的定时脚本都是使用cli的命令行执行的,挺好用的。当然了也没使用过其他的命令行的类库。
zap
star:20.6k
zap是 uber 开源的 Go 高性能日志库,支持不同的日志级别,支持日志记录结构化,分配资源最小。
使用体验:高性能和灵活性兼具的日志服务,碰过的几乎所有的项目都是用 zap 记录日志,当然了,还是有一些门槛的。可供选择的好用的日志类库也不多。
mysql
star:14.1k
第三方的 MySQL 驱动,专为 Go 的 sql 标准库设计。它提供了对 MySQL 特性的支持,包括连接池、事务处理等,它的特点是高性能、安全性。
使用体验:这个感觉没啥可说的,底层的协议驱动,各种ORM的框架、拼SQL的写法,后面都是使用mysql驱动的。
redigo
star:9.7k
Redigo 是一个Go 语言 Redis 客户端库,它提供了一个简单的接口来执行 Redis 命令,它支持 Redis 的多种数据类型和操作,包括字符串、哈希、列表、集合和有序集合等。它也支持发布/订阅模式、事务、管道和连接池等功能。
使用体验:我们的项目使用Redis客户端都是redigo,可使用的Redis客户端就上面这两个,找一个顺眼的用就行了。
errors
star:8.1k
pkg/errors 是一个 Go 语言的错误处理包,它提供了一个用于错误处理的机制,旨在简化错误信息的创建和传播。这个包提供了一种构建错误的原因和上下文的方法,使得在调试和错误追踪时更加直观和方便。
使用体验:我们的每个项目错误处理都是使用errors,它的的优势是错误多次封装包裹和传寄,可以很方便的拿到错误的调用链和堆栈信息。
goconvey
star:8.1k
GoConvey 是一个用于 Go 程序 测试框架。它通过提供一种易于阅读和编写的测试风格,帮助开发者定义和执行测试用例。特别适合于编写复杂的测试场景,提高代码的可读性和可维护性。
使用体验:好用,本来需要输出打印测试结果,GoConvey 让测试成为项目的一部分,提高测试代码的可读性,所有人读代码一目了然。
gin
star:4.2k
gin是用于实时加载Go Web应用程序的程序。只需 gin 运行在应用程序的目录中,gin就是实时监测,检测到代码更改后,将自动重新编译代码,应用在下次收到HTTP请求时就是用的修改后台的代码。
使用体验:觉得热加载服务很有必要,这个也特别好用,不知道star为啥这么少,只要文件有修改,codegangsta/gin 就会自动编译然后执行,在代码编写和调试的阶段非常有用,极大的提高了效率。
golang开发类库推荐的更多相关文章
- golang开发:类库篇(五)go测试工具goconvey的使用
为什么要使用goconvey测试程序 goconvey 集成go test,go test 无缝接入.管理运行测试用例,而且提供了丰富的函数断言.非常友好的WEB界面,直观的查看测试结果. 如果没有g ...
- golang开发:类库篇(一) Zap高性能日志类库的使用
为什么要用zap来写日志 原来是写PHP的,一直用的error_log,第一次写Go项目的时候,还真不知道该怎么写日志,后来就按照PHP的写法自己不成规范的捣鼓写.去了新公司之后,发现用的是zap.后 ...
- golang开发:类库篇(三)命令行工具cli的使用
为什么要使用命令行 觉得这个问题不应该列出来,又觉得如果初次进行WEB开发的话,可能会觉得所有的东西都可以使用API去做,会觉得命令行没有必要. 其实,一个生产的项目命令行是绕不过去的.比如运营需要导 ...
- golang开发:类库篇(二) Redis连接池的使用
为什么要使用连接池 一个数据库服务器只拥有有限的连接资源,一旦所有的连接资源都在使用,那么其它需要连接的资源就只能等待释放连接资源.所以,在连接资源有限的情况下,提高单位时间的连接的使用效率,缩短连接 ...
- golang开发:类库篇(四)配置文件解析器goconfig的使用
为什么要使用goconfig解析配置文件 目前各语言框架对配置文件书写基本都差不多,基本都是首先配置一些基础变量,基本变量里面有环境的配置,然后通过环境变量去获取该环境下的变量.例如,生产环境跟测试环 ...
- flipt 一个基于golang 的特性工具开发类库
以前介绍过一个Flagr 的基于golang 的特性功能开发类库(技术雷达推荐),今天看到一个类似也很不错的方案flipt 参考架构 包含的特性 快速,使用golang 编写,同时进行了性能优化 运行 ...
- 准备写个Golang开发的教程
进入golang的开发已经差不多两年了,最近打算写个Golang的教程.目的是让有开发基础,没接触过Golang的人能够愉快高效地写出Golang项目. 1 记得17年底时候,有个特别小的项目,准备试 ...
- iOS - 开发类库
开发类库 UI 项目名称 项目信息 1.MJRefresh 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明. ...
- 使用golang 开发的 andriod应用
最近在捣鼓一个东东,就是使用golang开发andriod应用.说起来简单操作起来还挺麻烦,中间又学习了很多东西.比如ubuntu,docker,angular,ionic,jquery mobile ...
- Linux下golang开发环境搭建
对于golang开发来说,Windows下可以用vscode或者liteide都不错,但是Linux下的开发也就只有vim了,所以怎么搞笑的利用vim进行golang开发呢? 参考官方推荐的一个插件: ...
随机推荐
- 实操开源版全栈测试工具RunnerGo安装(三)MacOS安装
以Sonoma 14.1.2系统为例 视频教程:https://www.bilibili.com/video/BV1fG411e7h2/?spm_id_from=333.999.0.0 1.下载并安装 ...
- [攻防世界][Web]PHP2
打开靶机对应的url 就一行字 Can you anthenticate to this website? 第一感觉就需要做目录文件扫描 使用御剑和dirsearch进行扫描,发现一个文件 index ...
- 搭建Windows环境下的多功能免费SSH客户端
关于Windows下的SSH客户端工具,可以有许多选择,从开源免费到商业收费的,零零总总. 免费版: Putty就是最简单的SSH客户端,非常轻量级. Electerm是一个开源可免费使用的跨平台SS ...
- 浅谈 rxgo 在项目中的使用方式
项目中使用到了 RxGo ,感觉现有的处理方式有一定的优势,当然也有一定的有劣势,遂记录下来,免得自己忘记. 本文介绍的只是 rxgo 的一种方式而已,如果你有不错的使用方式,请不吝赐教,谢谢. 对 ...
- NSSRound#17 Basic web
NSSRound#17 Basic web 真签到 审题 一个登录界面 看到页面名字Robots? 转到robots.txt 看到加密 知识点: 加密解密. 解题 hint解密,使用Hex加密方式解出 ...
- redis-cluster 性能调优
关闭RDB防止fork进程的内存溢出问题 save "" appendonly=yes 防止某个节点挂掉,整个cluster挂掉的问题 cluster-require-full-c ...
- 【Azure 应用服务】Azure App Service多实例中,出现某一个实例CPU居高不下的情况,如何重启单个实例呢?
问题描述 在使用App Service服务中,当多实例中,其中一个实例出现高CPU,高Memory的情况,为了尽可能少的影响正在运行的应用,需要单独重启某一个实例的情况下,如何手动操作呢? 问题解答 ...
- Netty笔记(7) - 使用Netty 模仿 Dubbo 实现简单的 远程调用
使用Netty 模仿 Dubbo 实现简单的 远程调用 使用 java的反射 动态代理 加 Netty的远程访问 实现根据接口的RPC 远程调用 定义两个公共接口: public interface ...
- C++函数模板总结:
//C++提高编程 模板(泛型编程 STL)//模板不可以直接使用 它只是一个框架//模板的通用并不是万能的//语法//template<typename T>//函数模板两种方式//1. ...
- Codeforces Round 170 (Div. 1)A. Learning Languages并查集
如果两个人会的语言中有共同语言那么他们之间就可以交流,并且如果a和b可以交流,b和c可以交流,那么a和c也可以交流,具有传递性,就容易联想到并查集,我们将人和语言看成元素,一个人会几种语言的话,就将这 ...