newticker go

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

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

fmt 库简介和示例【GO 基础】

fmt 标准库是 Go 语言标准库的一部分,提供了格式化字符串、输入输出等基本功能。看着简单,起始里边还包含了许多妙用。 ......
示例 基础 简介 fmt

Go - receiving from an empty channel

package main import ( "fmt" "sync" "time" ) var workers = 3 func processItem(input <-chan int, output chan<- int, wg *sync.WaitGroup) { for { fmt.Prin ......
receiving channel empty from Go