Go语言技术文章
-
Go 1.23 新增的 unique.Make 可以把 comparable 值规范化为可比较的 Handle。本文从字符串标签注册场景出发,组合一个小型工具,说明去重、Handle 比较、Value 读取以及并发边界。413 收藏 -
Go unique.Make 可把重复的可比较值规范化为 Handle[string],用于批处理中的重复标签比较与索引。本文用一个最小示例说明它和 map[string] 的取舍、Value 边界、并发语义与持久化限制。413 收藏 -
Go tar 解包应分别处理条目名与链接目标。本文采用默认拒绝链接的严格策略,用 os.Root 与私有暂存目录限制实际写入,并说明词法检查、平台差异及资源预算边界。411 收藏 -
Go runtime/trace.NewTask 为跨函数、跨 goroutine 的逻辑工作流创建携带 task 的 context,再用 Log、WithRegion 和 Task.End 组织执行追踪。本文只讲任务边界、上下文传播和结束时机,不展开 pprof 性能剖析。411 收藏 -
本文用 strings.CutSuffix 处理重复后缀,说明它为什么只删除最外层一次、怎样区分未命中和空结果,以及什么时候应该循环剥离或限制次数。410 收藏 -
Go sync.Pool 只提供临时对象的复用机会,不承诺每次 Get 都拿回上一次 Put 的对象。本文从地址变化现象出发,解释自动清理的契约,构造最小复现,并给出清理对象、限制容量和选择替代结构的实用边界。408 收藏 -
Golang · Go问答 | 3天前 | 标准库 · HTTP · Cookie · Go问答 · Go HTTP请求头 http.Cookie Cookie.String Cookie.Valid
Go http.Cookie 出现空结果时,先区分 String 返回空字符串、Valid 返回错误和 Request.Cookies 返回空切片,再检查 nil、Name、请求头格式与 Cookie 数量边界。407 收藏 -
用一个只读标签集合实现 Go iter.Seq 范围迭代器,说明空输入、构造错误、提前退出与重复遍历的接口约定,给出带中文注释的完整示例。407 收藏 -
Golang · Go问答 | 3天前 | 标准库 · TCP · Go问答 · Go keepalive net.TCPConn KeepAliveConfig SetKeepAlive SetKeepAlivePeriod TCP排障
排查 Go net.TCPConn 的 KeepAlive 参数未生效时,先区分开关、空闲时间、探测间隔与应用层超时,再核对 TCPConn 类型、API 返回错误、Dialer 或 ListenConfig 的配置来源和操作系统边界,并给出旧版本与 Go 1.23+ 的正确写法。406 收藏 -
只修改 RawQuery 不会自动改变 Path。本文通过保留 RawPath、重建 URL 丢失编码提示和路径二次编码三个对照,解释路径变化的来源,并给出保留解析错误的查询参数修改函数。406 收藏 -
解释 io.Pipe 读取端提前关闭时写入返回 ErrClosedPipe 的原因,对比两端 CloseWithError 的传递方向,并通过原创建例说明部分写入、错误识别和生产者收尾。405 收藏 -
Go encoding/base32 默认会生成带等号的 Base32 字符串,WithPadding(base32.NoPadding) 则关闭填充。本文解释两种格式的差异,给出带等号、无填充和混合历史数据的解码写法,并说明如何用统一编码策略完成迁移。405 收藏 -
用 Go io.ReadFull 读取固定长度协议帧,区分正常 EOF、半包 ErrUnexpectedEOF 与底层 I/O 错误,并给出长度校验和循环读取示例。405 收藏 -
go mod tidy 失败时,先按模块路径、版本选择、代理下载和本地文件四类原因分流,再用 go list、go env 和文件 diff 缩小范围。本文给出可重复的排查命令,以及修复后的干净回归方法。404 收藏 -
Go 工具链在目录、终端和 CI 中选择不同版本时,如何核对 PATH、GOTOOLCHAIN 与项目声明,控制执行来源并记录实际版本。404 收藏