Go教程技术文章
-
bytes.Clone 返回独立的 []byte 副本,适合把复用缓冲区中的数据保存成安全快照。本文用可复现代码说明 append、切片别名和 bytes.Clone 的差异,并给出基线与边界。202 收藏 -
Go 1.27 为 math/big.Int 增加 Divide,可按 Trunc、Floor、Round、Ceil 计算商和余数。文章用负数除法与中点舍入说明四种模式、恒等式和迁移边界。202 收藏 -
Golang · Go教程 | 1个月前 | 并发 · HTTP · 性能优化 · 故障排查 · Go教程 · Go Goroutine 连接复用 pprof http.Client close Response.Body
Go 服务里调用 http.Client 后,Response.Body 没有在所有路径关闭,连接会被持续占用,pprof 里常能看到 net/http 相关 goroutine 增长。用 defer resp.Body.Close()、完整处理响应体、复用 Client,并通过压测与连接指标复查,可以把这类问题收住。201 收藏 -
Go 1.23 引入的 slices.Values 可以把切片包装成 iter.Seq。本文从实现、空切片和提前停止三个边界出发,说明它与普通 range、slices.Collect 的连接方式。201 收藏 -
围绕 Go 1.26 Green Tea GC 的小对象标记扫描、同口径基准和 nogreenteagc 回退对照,说明如何判断收益与定位回归。201 收藏 -
线上只拿到一个 Go 二进制时,debug.BuildInfo 可以帮助你还原构建工具链、主模块、依赖模块与 VCS 设置。本文用 ReadFile 和 ReadBuildInfo 组成一套发布验收流程,并说明模块模式、裁剪信息与脏工作区的边界。200 收藏 -
复用 Go 的 time.Timer 时,Reset 的安全关键不是重新设置时长,而是先确认旧定时器是否停止、是否仍有到期信号,以及是否存在多个 goroutine 同时消费 C。本文用单次超时循环拆解 Stop、Reset、timer.C 和并发读取的边界。199 收藏 -
用 Go net/http 实现一个可取消的 SSE 心跳服务,串起 Flusher、Request.Context、断线检测和资源回收,重点看连接结束后如何让后台工作及时停下来。198 收藏 -
Go 1.20 引入 unsafe.StringData、unsafe.String 和 unsafe.SliceData 后,字符串与字节切片之间可以少一次复制,但指针生命周期、只读约束和空字符串边界必须一起核验。本文用可复现实验拆开这些风险。197 收藏 -
用 Go runtime/metrics 读取 Float64Histogram,理解 Buckets 与 Counts 的对应关系,并用快照估算延迟分布的中位数和高分位边界。197 收藏 -
服务启动后,配置、正则或只读客户端常常只需要初始化一次,却要被多个 goroutine 安全读取。本文用 Go 标准库的一次性值函数演示惰性初始化、结果缓存、panic 复用与测试边界,说明它和手写 sync.Once 的取舍。196 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · JSON · go · 后端开发 · 版本迁移 · JSON Go 1.27 encoding/json/v2 encoding/json/jsontext GOEXPERIMENT
Go 1.27 带来 encoding/json/v2 与 encoding/json/jsontext。本文从旧 encoding/json 兼容边界开始,演示 v2 的选项配置、重复字段和非法 UTF-8 的回归检查,并给出灰度试用与 GOEXPERIMENT=nojsonv2 回退清单。195 收藏 -
本文用一个 Go HTTP 接口示例,把 log/slog 的 JSONHandler、Logger.With、请求字段和本地检查串起来,说明如何把普通日志变成可检索、可过滤、可定位的结构化日志。194 收藏 -
Go slog 的 AddSource 能把日志调用点写进 source 字段,排查并发服务时很有用,但每条日志都要承担调用点定位和格式化成本。本文用可验证的基准与生产开关说明它的代价、适用范围和安全切换方式。192 收藏 -
Go 的 O_APPEND 只把每次写入的起点交给内核保证,不等于整条日志天然不可交错,也不替日志轮转解决文件描述符和重命名边界。文章用可运行示例拆开偏移、并发写入和轮转后的处理方式。192 收藏