Go语言技术文章
-
通过 Linux 最小示例封装 net.ListenConfig.Control,说明底层参数入口、两类错误传播、文件描述符范围和监听器关闭责任。150 收藏 -
Go 的 cipher.NewGCMWithNonceSize 可以接收非标准长度的 nonce,但它会把长度约束带入 AEAD、报文解析和跨系统互操作。本文用一个固定报文格式说明默认构造、自定义构造与迁移代价。150 收藏 -
strings.Builder 已使用后不能按值复制,副本继续写入可能触发异常。本文定位参数、结构体和切片中的隐式复制,给出指针协作与字符串前缀重建两种迁移方式,并解释长度为零和未触发 panic 的误区。149 收藏 -
Go ServeMux 出现路由冲突时,先沿注册阶段的 panic 栈找到两个 pattern,再比较方法、主机和路径的具体程度;交换注册顺序不能解决同等具体的冲突。149 收藏 -
Go transform.Chain 按参数顺序组合文本转换器。本文用宽度折叠、字符映射和 NFC 解释顺序差异,给出字符串与流式写法,并说明错误、状态和资源归属。149 收藏 -
go-flags 可以把 INI section 和键值映射到命令参数结构体。本文从 ini-name 标签、IniParser、ParseAsDefaults、命令行覆盖和 IniError 讲清配置加载的完整写法。149 收藏 -
介绍Go NATS客户端用NewMsg、Header.Set与Add附加消息头,通过PublishMsg发送并读取单值和多值字段,区分发送成功与业务处理确认。149 收藏 -
用 Go oggvorbis 读取 OGG/Vorbis 音频的采样率和声道数,比较 GetFormat 与 NewReader 两条路径,并说明 GetLength、io.ReadSeeker、samples 和解码值数量的边界。149 收藏 -
Go unsafe.Pointer 本身不是 GC 失效的同义词,真正危险的是把地址转成 uintptr 后脱离指针语义长期保存,或在外部调用边界提前失去对象引用。本文按转换、生命周期、cgo 与排查边界说明安全写法。149 收藏 -
用一个可复用的 Gate 说明 Go sync.Cond 如何让多个协程等待同一条件,并在条件成立后通过 Broadcast 一次唤醒全部等待者。149 收藏 -
go/types.Config.Error 不设置时,类型检查通常在首个错误处停止。本文用原创示例说明如何通过回调收集多个 types.Error,区分 Check 返回的首个错误、次生错误与不完整的 Package,并封装成源码分析工具可复用的写法。149 收藏 -
Go 的 StdEncoding 会接受部分尾部填充位不规范的 Base64 输入。本文用 Zh== 对比 Zg==,说明 base64.Strict 的拒绝边界、错误处理方式和兼容取舍。149 收藏 -
解释 Go time.AfterFunc 的回调与 Timer.Stop 同时发生时如何判断返回值,并用 done 或 WaitGroup 协调回调完成与资源清理。148 收藏 -
Go io.Pipe 的写端提前失败时,普通 Close 会让读端只看到 EOF。本文按读写两端的职责解释 CloseWithError、n 与 err 的处理方式,以及关闭顺序和 ErrClosedPipe 的边界。148 收藏 -
go mod graph 用模块 requirement 边展示依赖来源,go list -m all 用来观察最终构建列表。本文按排查顺序说明如何定位上游、理解版本差异,并处理 replace、exclude 与 Go 版本语义。148 收藏