go-gprc gprc go

Go每日一库之35:zerolog

## 简介 每个编程语言都有很多日志库,因为记录日志在每个项目中都是必须的。前面我们介绍了标准日志库[`log`](https://go-quiz.github.io/2020/02/07/godailylib/log/)、好用的[`logrus`](https://go-quiz.github.i ......
zerolog

Go每日一库之36:nutsdb

## 简介 [`nutsdb`](https://github.com/xujiajun/nutsdb)是一个完全由 Go 编写的简单、快速、可嵌入的持久化存储。`nutsdb`与我们之前介绍过的[`buntdb`](https://go-quiz.github.io/2020/03/21/goda ......
nutsdb

Go每日一库之37:sqlc

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

Go每日一库之47:cli

## 简介 [`cli`](https://github.com/urfave/cli)是一个用于构建命令行程序的库。我们之前也介绍过一个用于构建命令行程序的库[`cobra`](https://go-quiz.github.io/2020/01/17/godailylib/cobra/)。在功能上 ......
cli

Go每日一库之48:cron

## 简介 [`cron`](https://github.com/robfig/cron)一个用于管理定时任务的库,用 Go 实现 Linux 中`crontab`这个命令的效果。之前我们也介绍过一个类似的 Go 库——[`gron`](https://go-quiz.github.io/2020 ......
cron

Go每日一库之63:ants

## 简介 处理大量并发是 Go 语言的一大优势。语言内置了方便的并发语法,可以非常方便的创建很多个轻量级的 goroutine 并发处理任务。相比于创建多个线程,goroutine 更轻量、资源占用更少、切换速度更快、无线程上下文切换开销更少。但是受限于资源总量,系统中能够创建的 goroutin ......
ants

Go每日一库之65:tunny

## 简介 之前写过一篇文章介绍了`ants`这个 goroutine 池实现。当时在网上查看相关资料的时候,发现了另外一个实现[`tunny`](https://github.com/Jeffail/tunny)。趁着时间相近,正好研究一番。也好比较一下这两个库。那就让我们开始吧。 ## 快速开始 ......
tunny

Go每日一库之66:bubbletea

## 简介 `[bubbletea](https://github.com/charmbracelet/bubbletea)`是一个简单、小巧、可以非常方便地用来编写 TUI(terminal User Interface,控制台界面程序)程序的框架。内置简单的事件处理机制,可以对外部事件做出响应, ......
bubbletea

Go每日一库之68:dateparse

## 简介 不管什么时候,处理时间总是让人头疼的一件事情。因为时间格式太多样化了,再加上时区,夏令时,闰秒这些细枝末节处理起来更是困难。所以在程序中,涉及时间的处理我们一般借助于标准库或第三方提供的时间库。今天要介绍的[`dateparse`](https://github.com/araddon/ ......
dateparse

Go每日一库之31:plot(图表绘制)

## 简介 本文介绍 Go 语言的一个非常强大、好用的绘图库——`[plot](https://github.com/gonum/plot)`。`plot`内置了很多常用的组件,基本满足日常需求。同时,它也提供了定制化的接口,可以实现我们的个性化需求。`plot`主要用于将数据可视化,便于我们观察、 ......
图表 plot

Go每日一库之64:ants(源码赏析)

## 简介 继上一篇[Go 每日一库之 ants](https://go-quiz.github.io/2021/06/03/godailylib/ants),这篇文章我们来一起看看`ants`的源码。 ## `Pool` 通过上篇文章,我们知道`ants`池有两种创建方式: - `p, _ := ......
源码 ants

Go每日一库之67:ozzo-validation

## 简介 [`ozzo-validation`](https://github.com/go-ozzo/ozzo-validation)是一个非常强大的,灵活的数据校验库。与其他基于 struct tag 的数据校验库不同,`ozzo-validation`认为 struct tag 在使用过程中 ......
ozzo-validation validation ozzo

Go每日一库之49:mapstructure

## 简介 [`mapstructure`](https://github.com/mitchellh/mapstructure)用于将通用的`map[string]interface{}`解码到对应的 Go 结构体中,或者执行相反的操作。很多时候,解析来自多种源头的数据流时,我们一般事先并不知道他 ......
mapstructure

Go每日一库之50:jobrunner

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

Go每日一库之51:gabs

## 简介 JSON 是一种非常流行的数据交换格式。每种编程语言都有很多操作 JSON 的库,标准库、第三方库都有。Go 语言中标准库内置了 JSON 操作库`encoding/json`。我们之前也介绍过专门用于**查询** JSON 串的库[gjson](https://go-quiz.gith ......
gabs

Go每日一库之52:commonregex

## 简介 有时,我们会遇到一些需要使用字符串的匹配和查找的任务。并且我们知道这种情况下,使用正则表达式是最简洁和优雅的。为了完成某个任务特地去系统地学习正则表达式费时费力,而且一段时间不用又很容易遗忘。下次遇到问题还要再重复这个过程。[`commonregex`](https://github.c ......
commonregex

Go每日一库之53:commonregex

## 简介 有时,我们会遇到一些需要使用字符串的匹配和查找的任务。并且我们知道这种情况下,使用正则表达式是最简洁和优雅的。为了完成某个任务特地去系统地学习正则表达式费时费力,而且一段时间不用又很容易遗忘。下次遇到问题还要再重复这个过程。[`commonregex`](https://github.c ......
commonregex

Go每日一库之55:quicktemplate

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

Go每日一库之69:resty

## 简介 [`resty`](https://github.com/go-resty/resty)是 Go 语言的一个 HTTP client 库。`resty`功能强大,特性丰富。它支持几乎所有的 HTTP 方法(GET/POST/PUT/DELETE/OPTION/HEAD/PATCH等),并 ......
resty

Go每日一库之70:termtables

## 简介 今天学个简单点的,[`termtables`](github.com/scylladb/termtables)处理表格形式数据的输出。适用于随时随地的输出一些状态或统计数据,便于观察和调试。是一个很小巧的工具库。我在学习[`dateparse`](https://go-quiz.gith ......
termtables

Go每日一库之54:quicktemplate(增强模板库)

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

go go代码中调用python脚本

目录go go代码中调用python脚本写个简单的py脚本再写个go的脚本 go go代码中调用python脚本 有的官方文档只提供了java和python的sdk,而我们需要用他们封装的服务,只能调用python或java的接口,接下来演示怎么调用python 写个简单的py脚本 import s ......
脚本 代码 python go

Go每日一库之28:validator

简介 今天我们来介绍一个非常实用的库——validator。validator用于对数据进行校验。在 Web 开发中,对用户传过来的数据我们都需要进行严格校验,防止用户的恶意请求。例如日期格式,用户年龄,性别等必须是正常的值,不能随意设置。 快速使用 先安装: $ go get gopkg.in/g ......
validator

在Go中如何实现并发

Go语言的并发机制是其强大和流行的一个关键特性之一。Go使用协程(goroutines)和通道(channels)来实现并发编程,这使得编写高效且可维护的并发代码变得相对容易。下面是Go的并发机制的详细介绍: 协程(Goroutines): 协程是Go中的轻量级线程,由Go运行时管理。与传统线程相比 ......

Go每日一库之28:validator

简介 今天我们来介绍一个非常实用的库——validator。validator用于对数据进行校验。在 Web 开发中,对用户传过来的数据我们都需要进行严格校验,防止用户的恶意请求。例如日期格式,用户年龄,性别等必须是正常的值,不能随意设置。 快速使用 先安装: $ go get gopkg.in/g ......
validator

Modbus动态链接库供多语言使用 | Go

Modbus协议控制动态链接库 应用场景 基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题, 而且对modbus协议存在比较多的细节处理,可以查看modbus slave、或者modbus poll中相关的配置可知, 数据类型对应读写寄存器个数、大小端的处 ......
链接 动态 Modbus Go

Go每日一库之27:govaluate

简介 今天我们介绍一个比较好玩的库govaluate。govaluate与 JavaScript 中的eval功能类似,用于计算任意表达式的值。此类功能函数在 JavaScript/Python 等动态语言中比较常见。govaluate让 Go 这个编译型语言也有了这个能力! 快速使用 先安装: $ ......
govaluate

GPRC - Generic RPC

Naturally, some engineers look at this and immediately get to work to optimize how data can be transferred over the wire. One definite improvement tha ......
Generic GPRC RPC

Go每日一库之26:jj

简介 在前面两篇文章中,我们分别介绍了快速读取 JSON 值的库gjson和快速设置 JSON 值的库sjson。今天我们介绍它们的作者tidwall的一个基于gjson和sjson的非常实用的命令行工具jj。它是使用 Go 编写的快速读取和设置 JSON 值的命令行程序。 快速使用 Mac 上可以 ......

1.go安装和包管理工具

下载 地址 安装之后,自动添加系统环境变量 PATH=> "C:\Go\bin" 查看 go版本信息 go env 使用七牛云设置golang环境,代理 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct 保管理工 ......
工具 go