Go 每日一库之 gotalk

2021-05-21
阅读 7 分钟
2.9k
简介gotalk专注于进程间的通信,致力于简化通信协议和流程。同时它:提供简洁、清晰的 API;支持 TCP,WebSocket 等协议;采用非常简单而又高效的传输协议格式,便于抓包调试;内置了 JavaScript 文件gotalk.js,方便开发基于 Web 网页的客户端程序;内含丰富的示例可供学习参考。那么,让我们来玩一下吧~快速使用本文代...

你不知道的 Go 之 string

2021-05-18
阅读 8 分钟
6.4k
字符串(string)是 Go 语言提供的一种基础数据类型。在编程开发中几乎随时都会使用。本文介绍字符串相关的知识,帮助你更好地理解和使用它。

你不知的 Go 之 slice

2021-05-09
阅读 5 分钟
4.2k
切片(slice)是 Go 语言提供的一种数据结构,使用非常简单、便捷。但是由于实现层面的原因,切片也经常会产生让人疑惑的结果。掌握切片的底层结构和原理,可以避免很多常见的使用误区。

Go 每日一库之 bytebufferpool

2021-05-09
阅读 5 分钟
7.3k
在编程开发中,我们经常会需要频繁创建和销毁同类对象的情形。这样的操作很可能会对性能造成影响。这时,常用的优化手段就是使用对象池(object pool)。需要创建对象时,我们先从对象池中查找。如果有空闲对象,则从池中移除这个对象并将其返回给调用者使用。只有在池中无空闲对象时,才会真正创建一个新对象。另一方面...

Go 每日一库之 rxgo

2020-10-15
阅读 14 分钟
5.9k
ReactiveX,简称为 Rx,是一个异步编程的 API。与 callback(回调)、promise(JS 提供这种方式)和 deferred(Python 的 twisted 网络编程库就是使用这种方式)这些异步编程方式有所不同,Rx 是基于事件流的。这里的事件可以是系统中产生或变化的任何东西,在代码中我们一般用对象表示。在 Rx 中,事件流被称为 Observa...

Go 每日一库之 goquery

2020-10-11
阅读 6 分钟
12k
goquery是用 Go 语言编写的一个类似于 jQuery 的库。它基于 HTML 解析库net/html和 CSS 库cascadia,提供与 jQuery 相近的接口。Go 著名的爬虫框架colly就是基于 goquery 的。

Go 每日一库之 air

2020-10-02
阅读 2 分钟
6.4k
简介air是 Go 语言的热加载工具,它可以监听文件或目录的变化,自动编译,重启程序。大大提高开发期的工作效率。快速使用本文代码使用 Go Modules,在 Mac 上运行。先创建目录并初始化: {代码...} 执行下面的命令安装air工具: {代码...} 上面的命令会在$GOPATH/bin目录下生成air命令。我一般会将$GOPATH/bin加入系统PA...

Go 每日一库之 quicktemplate

2020-09-26
阅读 4 分钟
5.6k
最近在整理我们项目代码的时候,发现有很多活动的代码在结构和提供的功能上都非常相似。为了方便今后的开发,我花了一点时间编写了一个生成代码框架的工具,最大程度地降低重复劳动。代码本身并不复杂,且与项目代码关联性较大,这里就不展开介绍了。在这个过程中,我发现 Go 标准的模板库text/template和html/template...

Go 每日一库之 commonregex

2020-09-14
阅读 3 分钟
4.4k
有时,我们会遇到一些需要使用字符串的匹配和查找的任务。并且我们知道这种情况下,使用正则表达式是最简洁和优雅的。为了完成某个任务特地去系统地学习正则表达式费时费力,而且一段时间不用又很容易遗忘。下次遇到问题还要再重复这个过程。commonregex库来了,它内置很多常用的正则表达式,开箱即用。当然,我并不是说...

Go 每日一库之 gabs

2020-09-07
阅读 12 分钟
5.8k
JSON 是一种非常流行的数据交换格式。每种编程语言都有很多操作 JSON 的库,标准库、第三方库都有。Go 语言中标准库内置了 JSON 操作库encoding/json。我们之前也介绍过专门用于查询 JSON 串的库gjson和专门用于修改 JSON 串的库sjson,还有一个非常方便的操作 JSON 数据的命令行工具jj。今天我们再介绍一个 JSON 工具库...

在本地运行 fyne 官网

2020-09-03
阅读 3 分钟
4.2k
要深入学习和理解一个框架,官方文档是必须要仔细阅读的。fyne 官网有非常系统和详尽的文档。官方网站:[链接]。有时候我们会有这样一个需求——离线查看文档。我经常乘坐高铁来往杭州、上海两地,地铁、高铁上通常网络比较差,甚至没有网络。为此我特地去研究了一番怎样搭建 fyne 离线文档。

Go 每日一库之 jobrunner

2020-09-02
阅读 4 分钟
3.3k
我们在 Web 开发中时常会遇到这样的需求,执行一个操作之后,需要给用户一定形式的通知。例如,用户下单之后通过邮件发送电子发票,网上购票支付后通过短信发送车次信息。但是这类需求并不需要非常及时,如果放在请求流程中处理,会影响请求的响应时间。这类任务我们一般使用异步的方式来执行。jobrunner就是其中一个用...

Go 每日一库之 mapstructure

2020-07-30
阅读 9 分钟
18.1k
mapstructure用于将通用的map[string]interface{}解码到对应的 Go 结构体中,或者执行相反的操作。很多时候,解析来自多种源头的数据流时,我们一般事先并不知道他们对应的具体类型。只有读取到一些字段之后才能做出判断。这时,我们可以先使用标准的encoding/json库将数据解码为map[string]interface{}类型,然后根据标...

Go 每日一库之 cron

2020-06-27
阅读 12 分钟
32.9k
cron一个用于管理定时任务的库,用 Go 实现 Linux 中crontab这个命令的效果。之前我们也介绍过一个类似的 Go 库——gron。gron代码小巧,用于学习是比较好的。但是它功能相对简单些,并且已经不维护了。如果有定时任务需求,还是建议使用cron。

Go 每日一库之 cli

2020-06-24
阅读 15 分钟
12.4k
cli是一个用于构建命令行程序的库。我们之前也介绍过一个用于构建命令行程序的库cobra。在功能上来说两者差不多,cobra的优势是提供了一个脚手架,方便开发。cli非常简洁,所有的初始化操作就是创建一个cli.App结构的对象。通过为对象的字段赋值来添加相应的功能。

Go 每日一库之 negroni

2020-06-22
阅读 9 分钟
2.8k
为什么要使用中间件?有一些逻辑代码,如统计、日志、调试等,每一个处理器中都需要,如果一个个去添加太繁琐了、容易出错、容易遗漏。如果我们要统计处理器耗时,可以在每个处理器中添加代码统计耗时:

使用 fyne 编写计算器程序

2020-06-19
阅读 4 分钟
3.4k
在上一篇文章中,我们介绍了一个 Go 的高颜值 GUI 库fyne。本文接着上一篇,介绍如何使用fyne编写一个简单的计算器程序。程序效果如下:

Go 每日一库之 rpcx

2020-05-26
阅读 9 分钟
5.5k
在之前的两篇文章rpc和json-rpc中,我们介绍了 Go 标准库提供的rpc实现。在实际开发中,rpc库的功能还是有所欠缺。今天我们介绍一个非常优秀的 Go RPC 库——rpcx。rpcx是一位国人大牛开发的,详细开发历程可以在rpcx官方博客了解。rpcx拥有媲美,甚至某种程度上超越gRPC的性能,有完善的中文文档,提供服务发现和治理的插...

Go 每日一库之 jsonrpc

2020-05-11
阅读 7 分钟
3.4k
在上一篇文章中我们介绍了 Go 标准库net/rpc的用法。在默认情况下,rpc库内部使用gob格式传输数据。我们仿造gob的编解码器实现了一个json格式的。实际上标准库net/rpc/jsonrcp中已有实现。本文是对上一篇文章的补充。

Go 每日一库之 rpc

2020-05-10
阅读 10 分钟
5.6k
RPC(Remote Procedure Call)是远程方法调用的缩写,它可以通过网络调用远程对象的方法。Go 标准库net/rpc提供了一个简单、强大且高性能的 RPC 实现。仅需编写很少的代码就能实现 RPC 服务。本文就来介绍一下这个库。

Go 每日一库之 xorm

2020-05-08
阅读 11 分钟
11.3k
Go 标准库提供的数据库接口database/sql比较底层,使用它来操作数据库非常繁琐,而且容易出错。因而社区开源了不少第三方库,如上一篇文章中的sqlc工具,还有各式各样的 ORM (Object Relational Mapping,对象关系映射库),如gorm和xorm。本文介绍xorm。xorm是一个简单但强大的 Go 语言 ORM 库,使用它可以大大简化我...

Go 每日一库之 sqlc

2020-05-01
阅读 10 分钟
8.9k
在 Go 语言中编写数据库操作代码真的非常痛苦!database/sql标准库提供的都是比较底层的接口。我们需要编写大量重复的代码。大量的模板代码不仅写起来烦,而且还容易出错。有时候字段类型修改了一下,可能就需要改动很多地方;添加了一个新字段,之前使用select *查询语句的地方都要修改。如果有些地方有遗漏,可能就会...

Go 每日一库之 nutsdb

2020-04-27
阅读 7 分钟
3.6k
nutsdb是一个完全由 Go 编写的简单、快速、可嵌入的持久化存储。nutsdb与我们之前介绍过的buntdb有些类似,但是支持List、Set、Sorted Set这些数据结构。

Go 每日一库之 zerolog

2020-04-25
阅读 6 分钟
11.2k
每个编程语言都有很多日志库,因为记录日志在每个项目中都是必须的。前面我们介绍了标准日志库log、好用的logrus和上一篇文章中介绍的由 uber 开源的高性能日志库zap。zerolog相比zap更进了一步,它的 API 设计非常注重开发体验和性能。zerolog只专注于记录 JSON 格式的日志,号称 0 内存分配!

Go 每日一库之 zap

2020-04-24
阅读 10 分钟
37.1k
在很早之前的文章中,我们介绍过 Go 标准日志库log和结构化的日志库logrus。在热点函数中记录日志对日志库的执行性能有较高的要求,不能影响正常逻辑的执行时间。uber开源的日志库zap,对性能和内存分配做了极致的优化。

Go 每日一库之 go-app

2020-04-23
阅读 10 分钟
6.6k
go-app是一个使用 Go + WebAssembly 技术编写渐进式 Web 应用的库。WebAssembly 是一种可以运行在现代浏览器中的新式代码。近两年来,WebAssembly 技术取得了较大的发展。我们现在已经可以使用 C/C++/Rust/Go 等高级语言编写 WebAssembly 代码。本来就来介绍go-app这个可以方便地使用 Go 语言来编写 WebAssembly 代码的库。

Go 每日一库之 plot

2020-04-16
阅读 10 分钟
3k
本文介绍 Go 语言的一个非常强大、好用的绘图库——plot。plot内置了很多常用的组件,基本满足日常需求。同时,它也提供了定制化的接口,可以实现我们的个性化需求。plot主要用于将数据可视化,便于我们观察、比较。

Go 每日一库之 gentleman

2020-04-08
阅读 8 分钟
3.2k
gentleman是一个功能齐全、插件驱动的 HTTP 客户端。gentleman以扩展性为原则,可以基于内置的或第三方插件创建具有丰富特性的、可复用的 HTTP 客户端。相比标准库net/http,gentleman更灵活、易用。

Go 每日一库之 gopsutil

2020-04-06
阅读 11 分钟
10.1k
gopsutil是 Python 工具库psutil 的 Golang 移植版,可以帮助我们方便地获取各种系统和硬件信息。gopsutil为我们屏蔽了各个系统之间的差异,具有非常强悍的可移植性。有了gopsutil,我们不再需要针对不同的系统使用syscall调用对应的系统方法。更棒的是gopsutil的实现中没有任何cgo的代码,使得交叉编译成为可能。

Go 每日一库之 validator

2020-04-05
阅读 9 分钟
4.9k
今天我们来介绍一个非常实用的库——validator。validator用于对数据进行校验。在 Web 开发中,对用户传过来的数据我们都需要进行严格校验,防止用户的恶意请求。例如日期格式,用户年龄,性别等必须是正常的值,不能随意设置。