Go语言技术文章
-
围绕 archive/tar.Writer.AddFS 说明 fs.FS 目录遍历、嵌套条目错误、fs.PathError 定位、Close 收尾和特殊文件边界,给出可复用的 Go 打包处理方式。279 收藏 -
用完整值切片读取 Go 重复查询参数,区分同键值顺序、跨键参数对顺序和原始编码字节,给出显式错误处理与保序 Pair 模型。279 收藏 -
区分 time.Time 零值与 Unix epoch 的语义,说明 IsZero、Unix、可选时间字段和数据库时间字段应该分别怎样判断。278 收藏 -
从Wait提前返回与计数错误切入,说明WaitGroup零计数时Add必须先于Wait的规则,提供启动前登记、独立结果槽位示例,并检查Done配对、值复制和批次复用。278 收藏 -
修改环境变量后 Go 构建结果没有变化,不一定是缓存失效。本文区分运行时变量、构建参数和 cgo 外部依赖,给出缓存命中排查与安全重建方法。278 收藏 -
Go strings.Replacer.WriteString 接收 io.Writer,直接写出替换后的文本,并返回实际写入字节数与错误。本文用 bytes.Buffer 和部分写入 Writer 说明调用方式、错误判断及与 Replace 的选择。278 收藏 -
math/bits.Add64 用两个 uint64 和一个 0 或 1 的输入进位计算固定宽度和,同时返回 sum 与 carry-out。本文从返回值契约讲到两个 64 位字的 128 位加法,说明如何传递低位进位并处理最终溢出。278 收藏 -
用 Go Ants 配置 WithNonblocking(true),区分 ErrPoolOverload 与 ErrPoolClosed,并比较拒绝、有限重试和外部有界队列三种池满处理方式。278 收藏 -
通过SubscribeMultiple为多个主题过滤器分别指定QoS,示例说明Token等待、逐项授权返回码、超时不确定性,以及权限、重连与共享回调的职责安排。278 收藏 -
Go beep 暂停音频流不需要改写底层 Streamer,使用 beep.Ctrl 包装后切换 Paused 即可;播放中的对象要在 speaker.Lock 与 Unlock 之间修改,并区分暂停静音、继续播放和彻底停止。278 收藏 -
用 Go 1.24 的 runtime.AddCleanup 管理已有 []byte 缓冲区:从 sync.Pool 复用容量,显式 Close 与 GC 兜底共享幂等释放协议,并说明引用边界、Stop、KeepAlive 和并发约束。278 收藏 -
Go container/list.InsertBefore 返回 nil,通常不是插入位置写错,而是 mark 并不属于当前 List。本文从 Element 的所属关系和标准库源码出发,说明跨链表、已移除节点、nil 返回值与安全插入写法。278 收藏 -
Go go/version.Compare 按 Go 工具链规则比较版本,本文用 beta、rc、语言版本和补丁版本说明排序关系,并给出输入校验与最低版本判断写法。278 收藏 -
Go ast.Preorder 返回可直接用 range 消费的 AST 节点迭代器。本文从 parser.ParseFile 开始,说明深度优先前序顺序、节点类型筛选、找到目标后 break,以及需要跳过子树时的 API 边界。278 收藏 -
sync.OnceValue 只返回一次计算得到的 T,不会自动告诉调用方初始化是否已经发生。当 0、空字符串或 nil 也是合法业务结果时,应把 value、ready 或 err 放进同一个返回结构中,再由 OnceValue 统一缓存。278 收藏