-
用 Go log/slog 的 LogValuer 把敏感类型转换成只含安全字段的 slog.Value,掌握脱敏、Resolve 和多 Handler 输出的边界。
-
用一个小型内存复制场景说明 Go bytes.Reader.WriteTo 的调用方式、返回值、游标推进和错误边界。
-
Go 的 expvar.Publish 可把实现 Var 的对象注册到全局表,并由 /debug/vars 输出 JSON。本文用 Func、Int 与 Map 组合自定义运行快照,并说明路由和安全边界。
-
讲清 Go token.FileSet.PositionFor 如何把 token.Pos 转成文件名、字节偏移、行号和列号,并比较 adjusted 参数与 //line 指令的实际影响。
-
sync.Pool 在池空时只有 New 非 nil 才会创建默认对象。本文用 bytes.Buffer 说明正确初始化、typed nil 陷阱、借用归还封装、状态重置和测试边界。
-
持续同步 pkg.go.dev API 时,不要把 nextPageToken 当永久断点。本文用 Go 完整消费分页、稳定去重、有限重试,并在全量成功后原子替换本地索引。
-
串行调用
在用go编写web/rpc服务器的时候,经常会出现需要对下游多 个/组 服务调用rpc(或者其他比较耗时的操作)的情况。按照自然的写法,比如对下游有ABC三个调用,串行顺着写,就总共要花费
-
channel
首先明确一下channel的作用:用于go协程间的通信。
go语言最大的特点就是支持高并发:goroutine和channel是支持高并发的重要组成部分。
单纯地将函数并发执行是没有意义的。函数与函数间
-
日常项目中,读取各种配置文件是避免不了的,这里介绍一个能读取多种配置文件的库,viper
viper读取ini文件
config := viper.New()
config.AddConfigPath("./conf/") // 文件所在目录
config.SetConfigName("b") /
-
字符串拼接在 golang 里面其实有很多种实现。
实现方式
直接使用运算符
func BenchmarkAddStringWithOperator(b *testing.B) {
hello := "hello"
world := "world"
for i := 0; i &
-
前言
在golang中,只需要在函数调用前加上关键字go即可创建一个并发任务单元,而这个新建的任务会被放入队列中,等待调度器安排。相比系统的MB级别线程栈,goroutine的自定义栈只有2KB,这使
-
简单二维码生成
Go 有一个 go-qrCode 库可以很简单的完成该项功能。首先需要下载该包。
go get github.com/skip2/go-qrcode
下载完之后就可以简单创建一个 Go项目。
func main(){
qrcode.WriteFile("新年快乐",
-
golang时间格式化
科普 CST 含义
CST: 中部标准时间 (Central Standard Time) 同时表示下面4个时区
CST Central Standard Time(USA) UT-6:00 CST Central Standard Time(Australia) UT 9:30 CST China Standard Time UT 8:00 CST Cuba Standard Time
-
GoogleProtocolBuffers(以下简称ProtoBuf)是一种轻量级、高效的数据序列化格式,被广泛应用于分布式系统中的数据传输和存储。而Go语言作为一种现代化的编程语言,对ProtoBuf的支持也非常友好,本文将介绍在Go语言中使用ProtoBuf进行数据序列化的方法。一、安装ProtoBuf在开始使用ProtoBuf之前,需要先安装它。可
-
近年来,随着互联网技术的不断发展,WebAPI接口的重要性越来越高,而编写API文档也成为了开发工作中重要的一环。在Go语言中,我们可以使用OpenAPI/Swagger进行API文档编写。OpenAPI/Swagger是一种API规范和工具链,可以帮助我们构建和描述符合RESTful架构风格的API接口。它包含了一套规范的API描述语言和一系列的工具,可