Go 每日一库
文章平均质量分 96
darjun
这个作者很懒,什么都没留下…
展开
-
Go 每日一库之 rxgo
简介ReactiveX,简称为 Rx,是一个异步编程的 API。与 callback(回调)、promise(JS 提供这种方式)和 deferred(Python 的 twisted 网络编程库就是使用这种方式)这些异步编程方式有所不同,Rx 是基于事件流的。这里的事件可以是系统中产生或变化的任何东西,在代码中我们一般用对象表示。在 Rx 中,事件流被称为 Observable(可观察的)。事件流需要被 Observer(观察者)处理才有意义。想象一下,我们日常作为一个 Observer,一个重要的工作原创 2020-10-15 02:49:21 · 1806 阅读 · 0 评论 -
Go 每日一库之 mapstructure
简介mapstructure用于将通用的map[string]interface{}解码到对应的 Go 结构体中,或者执行相反的操作。很多时候,解析来自多种源头的数据流时,我们一般事先并不知道他们对应的具体类型。只有读取到一些字段之后才能做出判断。这时,我们可以先使用标准的encoding/json库将数据解码为map[string]interface{}类型,然后根据标识字段利用mapstructure库转为相应的 Go 结构体以便使用。快速使用本文代码采用 Go Modules。首先创建目录并初原创 2020-07-30 23:52:08 · 3285 阅读 · 0 评论 -
Go 每日一库之 cron
简介cron一个用于管理定时任务的库,用 Go 实现 Linux 中crontab这个命令的效果。之前我们也介绍过一个类似的 Go 库——gron。gron代码小巧,用于学习是比较好的。但是它功能相对简单些,并且已经不维护了。如果有定时任务需求,还是建议使用cron。快速使用文本代码使用 Go Modules。创建目录并初始化:$ mkdir cron && cd cron$ go mod init github.com/darjun/go-daily-lib/cron安装c原创 2020-06-27 15:04:05 · 782 阅读 · 0 评论 -
Go 每日一库之 cli
简介cli是一个用于构建命令行程序的库。我们之前也介绍过一个用于构建命令行程序的库cobra。在功能上来说两者差不多,cobra的优势是提供了一个脚手架,方便开发。cli非常简洁,所有的初始化操作就是创建一个cli.App结构的对象。通过为对象的字段赋值来添加相应的功能。cli与我们上一篇文章介绍的negroni是同一个作者urfave。快速使用cli需要搭配 Go Modules 使用。创建目录并初始化:$ mkdir cli && cd cli$ go mod init gi原创 2020-06-24 07:49:01 · 639 阅读 · 0 评论 -
Go 每日一库之 nutsdb
简介nutsdb是一个完全由 Go 编写的简单、快速、可嵌入的持久化存储。nutsdb与我们之前介绍过的buntdb有些类似,但是支持List、Set、Sorted Set这些数据结构。...原创 2020-04-27 23:45:30 · 758 阅读 · 0 评论 -
Go 每日一库之 sqlc
简介在 Go 语言中编写数据库操作代码真的非常痛苦!database/sql标准库提供的都是比较底层的接口。我们需要编写大量重复的代码。大量的模板代码不仅写起来烦,而且还容易出错。有时候...原创 2020-05-01 23:38:35 · 3045 阅读 · 0 评论 -
Go 每日一库之 xorm
简介Go 标准库提供的数据库接口database/sql比较底层,使用它来操作数据库非常繁琐,而且容易出错。因而社区开源了不少第三方库,如上一篇文章中的sqlc工具,还有各式各样的 OR...原创 2020-05-08 23:45:22 · 1319 阅读 · 0 评论 -
Go 每日一库之 rpcx
简介在之前的两篇文章rpc和json-rpc中,我们介绍了 Go 标准库提供的rpc实现。在实际开发中,rpc库的功能还是有所欠缺。今天我们介绍一个非常优秀的 Go RPC 库——rpc...原创 2020-05-26 23:45:13 · 789 阅读 · 0 评论 -
Go 每日一库之 twirp
简介twirp是一个基于 Google Protobuf 的 RPC 框架。twirp通过在.proto文件中定义服务,然后自动生产服务器和客户端的代码。让我们可以将更多的精力放在业务逻...原创 2020-06-11 00:17:56 · 446 阅读 · 0 评论 -
Go 每日一库之 casbin
简介权限管理在几乎每个系统中都是必备的模块。如果项目开发每次都要实现一次权限管理,无疑会浪费开发时间,增加开发成本。因此,casbin库出现了。casbin是一个强大、高效的访问控制库。...原创 2020-06-15 09:13:37 · 671 阅读 · 0 评论 -
Go 每日一库之 fyne
简介Go 语言生态中,GUI 一直是短板,更别说跨平台的 GUI 了。fyne向前迈了一大步。fyne 是 Go 语言编写的跨平台的 UI 库,它可以很方便地移植到手机设备上。fyne使...原创 2020-06-18 08:59:34 · 2415 阅读 · 0 评论 -
使用 fyne 编写一个计算器程序
简介在上一篇文章中,我们介绍了一个 Go 的高颜值 GUI 库fyne。本文接着上一篇,介绍如何使用fyne编写一个简单的计算器程序。程序效果如下:控件布局我们使用widget.Entr...原创 2020-06-19 08:27:08 · 767 阅读 · 0 评论 -
Go 每日一库之 negroni
简介negroni是一个专注于 HTTP 中间件的库。它小巧,无侵入,鼓励使用标准库net/http的处理器(Handler)。本文就来介绍一下这个库。为什么要使用中间件?有一些逻辑代码,如统计、日志、调试等,每一个处理器中都需要,如果一个个去添加太繁琐了、容易出错、容易遗漏。如果我们要统计处理器耗时,可以在每个处理器中添加代码统计耗时:package mainimport ( "fmt" "net/http" "time")func index(w http.ResponseW原创 2020-06-22 08:37:48 · 510 阅读 · 0 评论