Go语言技术文章
-
Zerolog 可以通过 Logger.With 创建带固定业务字段的子日志器。本文用 service、component 与 request_id 区分不同生命周期,说明怎样绑定、注入和复查字段边界,避免共享日志器被动态字段污染。316 收藏 -
go-runewidth 的全局函数都绑定 DefaultCondition,独立 Condition 则保存自己的宽度策略。本文拆开两种作用域、CreateLUT 缓存和多终端配置的取舍。316 收藏 -
Go go-wav 中,WAV 每帧字节数由每通道采样字节数和声道数共同决定。本文用公式解释位深、Block Align、Byte Rate 的关系,并给出读取 Decoder 字段的示例。316 收藏 -
Go 接口中的 nil 指针不一定等于 nil 接口。本文用最小代码对比 typed nil 的成因,并给出 error 返回、调用方检查、errors.Is 与 errors.As 的安全处理清单。316 收藏 -
用 Go 1.23 的 iter.Pull 把 push-style 迭代器接入一个可复用的 TakeUntil 工具,讲清 next、stop、提前退出和并发边界。316 收藏 -
用 go/types 做静态分析时,Selection.Index 保存的是从接收类型到字段的索引链。本文用两层嵌入结构演示如何还原 Meta.Base.ID 路径,并说明指针、命名类型、FieldVal 与边界错误的处理方式。316 收藏 -
Go 下载私有模块时出现 sum.golang.org 校验错误,通常是私有模块匹配规则没有配置,或把代理、校验数据库、仓库凭据三个问题混在了一起。本文按错误层级给出 GOPRIVATE、GONOSUMDB、GONOPROXY 的配置和排查方法。315 收藏 -
Go 文件关闭、EOF 和缓冲读取属于不同状态。通过直接读取、缓冲层和提前关闭的示例,解释错误差异的来源,并用明确的资源归属与错误链分类修复导入流程。315 收藏 -
通过FileInfoHeader与SetMode保存Go ZIP文件头的权限信息,说明CreateHeader写入、归档关闭、目录模式和跨平台恢复的区别,并给出普通文件打包示例。315 收藏 -
slices.Delete 的结果看似不稳定,通常来自忽略返回值、共享底层数组、len/cap 误判或并发读写。本文用 Go 示例和排查表说明稳定删除区间、处理尾部引用与隔离数据竞争的方法。315 收藏 -
Go io.Pipe 是同步且无内部缓冲的管道,一次 Write 可能由一次或多次 Read 完成。本文用读缓冲区大小、n 返回值和阻塞条件说明怎样判断读写边界。315 收藏 -
crc64.MakeTable 返回的 Table 可以作为只读算法表在多个任务间复用,但每个并发任务都应创建独立的 hash.Hash64。本文用 Go 代码拆开 Table、Hash64、Checksum、New 和 Update 的边界。315 收藏 -
Go test 报 internal package not allowed 或找不到内部包时,关键不是测试命令本身,而是导入者是否位于 internal 父目录树内。本文用目录、module 和测试包名拆出根因与修复方式。314 收藏 -
Golang · Go问答 | 4星期前 | HTTP · go · Context · net/http · Go net/http Transport goroutine泄漏 context取消 DialContext
自定义 http.Transport.DialContext 时,只有把请求 Context 传到真正可取消的等待点,才能避免连接 goroutine 长期滞留。本文用一个小型拨号器说明 net.Dialer.DialContext、自定义名额等待、Transport 接入、错误适配和 trace 排查的边界。314 收藏 -
Go CookieJar 跨子域会话异常应区分拒收与目标筛选,结合表驱动测试检查 Domain、Path 和 Secure,并明确 SameSite 的浏览器边界。314 收藏