无论写什么样的语言,单元测试都是必不可少的,它可以极大的提高我们的代码质量,减少各种低级错误和 bug无论你是一个靠谱合格的码农,还是一个优秀的程序员,单元测试都是咱们必须落实的一环单元测试比较容易,此处梳理了了基本的单元测试用到的方式和第三方库的使用方式,用到的时候,可以来这里查询 mock 第三方库的地址和基本用法,欢迎收藏基本的单元测试Golang 单
......
240
0
0
2024-02-08
互斥锁互斥锁是一种常用的控制共享资源访问的方法,它能够保证同时只有一个goroutine可以访问共享资源。Go语言中使用sync包的Mutex类型来实现互斥锁。 定义一个锁:var lock sync.Mutex
加锁:lock.Lock()
解锁:lock.Unlock()
完整示例package main
import (
"fmt
......
218
0
0
2024-02-08
看到 validator 咱们第一反应会想起啥?见名知意我就可以知道他是一个验证器,如果用过 gin web 框架的同学,自然是用过 gin 里面的 validator,只不过 gin 中使用的关键字是 binding 去做标识开门见山Validator 实际上是一个验证工具,属于 golang 的第三方包,这个包中使用了各种反射技巧来提供了各种校验和约束数
......
228
0
0
2024-02-03
说起 golang 的 flag 个包,我们第一反应的是什么呢?至少我曾经第一次看到 flag 包的时候,第一反应是想起写 C 语言的时候咱们用于定义一个表示的,我们一般会命名为 flag 变量实际上 golang 的 flag 包是用于处理命令行参数的工具包,我们可以基于这个包来开发自定义的命令行工具对于命令行,相信大家都不陌生吧,学过 C 的就知道,如下
......
195
0
0
2024-02-03
前面我们分享了 go-zero 的快速实战以及日志组件的剖析,本次我们来实战使用 go-zero jwt 鉴权本次文章主要是分享关于 go-zero 中 jwt 的使用方式,会以一个 demo 的方式来进行实战,对于使用 goctl 工具以及安装细节就不在赘述,有需要的话可以查看:官网本次文章主要分为如下几个部分:Jwt 的简单介绍Go-zero 中使用 j
......
282
0
0
2024-02-03
上一次我们分享了关于 gRPC-Gateway 快速实战 ,可以查看地址来进行回顾 :也可以查看关于 gRPC 的历史文章:gRPC介绍gRPC 客户端调用服务端需要连接池吗?gRPC的拦截器gRPC的认证分享一下 gRPC- HTTP网关 I今天主要是分享关于 gRPC-Gateway Swagger 的实战部分,文章大体分为如下几个部分:基本环境补充gR
......
249
0
0
2024-02-03
今天来分享一波 gRPC-Gateway , 之前咱们有分享过什么是 gRPC 及其使用方式,可以看看这些关于 gRPC 的历史文章:gRPC介绍gRPC 客户端调用服务端需要连接池吗?gRPC的拦截器gRPC的认证分享一下 gRPC- HTTP网关 I今天主要是分享关于 gRPC-Gateway 的实战部分,文章大体分为如下几个部分:gRPC-GateWa
......
224
0
0
2024-02-03
写在前面嗯,学习GO,所以有了这篇文章博文内容为《GO语言实战》读书笔记之一主要涉及知识接口是什么方法集(值接收和指针接收)多态「 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波」Golang 里面的 多态 是指代码可
......
208
0
0
2024-02-01
01 介绍Go 语言使用 goroutine 和 channel,可以实现通过通信共享内存。本文我们介绍 Go 语言怎么通过通信共享内存。02goroutine 和 channel在了解 Go 语言怎么通过通信共享内存之前。我们需要先了解一些预备知识,即 goroutine 和 channel 是什么?goroutine :goroutine 具有简单的模型
......
225
0
0
2024-01-26
01 介绍Go 语言为了方便我们开发,提供了 15 个内置函数,比如 len、cap、make 和 new 等。本文我们结合 Go 内置函数官方文档[1],介绍一下 Go 语言中的内置函数。02 内置函数内置函数append:内置函数 append 可以将元素追加到切片的末尾。func append(slice []Type, elems ...Type)
......
201
0
0
2024-01-26
01 介绍我们在之前的文章中介绍过标准库 log 包的使用方式,它虽然使用方便,但是它支持的功能比较简单。本文我们介绍 uber 开源的日志库 zap,首先使用 Gin 框架构建一个 Web 应用,然后通过在该 Web 应用中记录日志,来介绍 zap 的使用方式。最后,我们再使用开源的日志切割库 lumberjack,进行日志切割。02 使用 Gin 构建一
......
195
0
0
2024-01-26
做单元测试的时候,我们需要打桩mock掉一些中间件,miniredis是mock掉redis的一个利器它既可以通过非网络本地mock,也可通过tcp请求,经过redis协议完整mockredis代码,首先看下如何使用:package main
import (
"github.com/alicebob/miniredis/v2"
"github
......
203
0
0
2024-01-19
httptest是golang官方源码自带的测试包,它可以非常方便获取http请求结构体,http返回值结构体,以及在本地启动一个loopback的server,方便我们做单测。对于go的web应用程序中往往需要与其他系统进行交互, 比如通过http访问其他系统, 此时就需要一种方法用于打桩来模拟Web服务端和客户端,httptest包即Go语言针对Web应
......
210
0
0
2024-01-19
https://github.com/jarcoal/httpmock是一个mock http请求包,他的原理是使用MockTransport替换http包client的Transport RoundTripper,并注册请求对应的返回值。当http请求发出的时候,被mock的Transport拦截,通过路径匹配找到对应的response,实现了http请求
......
231
0
0
2024-01-19
go-mysql-elasticsearch的入口位于:mysql/go-mysql-elasticsearch/cmd/go-mysql-elasticsearch/main.go核心逻辑如下:var configFile = flag.String("config", "./etc/river.toml", "go-mysql-elasticsearch
......
224
0
0
2024-01-19