Go语言技术文章
-
用 Go strings.CutPrefix 处理可选前缀,覆盖命中、未命中、空前缀和重复前缀边界,并给出旧写法迁移方案。165 收藏 -
解释 Go database/sql 的 TxOptions 如何跨越驱动边界,区分会话默认值与下一笔事务作用域,并给出可靠的排查和验收方法。165 收藏 -
讲清 Go sync/atomic.Uint64 的自动对齐、primitive 原子函数在 32 位架构上的布局责任,以及无锁计数器的复制、快照、伪共享和分片边界。165 收藏 -
Go aes.NewCipher 报 invalid key size 时,关键不是截断或补零,而是确认 key 的实际字节数。本文区分原始字节、hex、base64 和密码输入,给出 16/24/32 字节检查、错误处理与 AES-GCM 调用边界。165 收藏 -
介绍 Go 1.27 goroutineleak profile 的接入方式、持续采样口径和检测边界,帮助定位永久阻塞的 goroutine 泄漏。165 收藏 -
用 Go strings.FieldsSeq 处理日志标签和空白分词,说明 iter.Seq[string] 如何被 for range 消费、空输入如何结束,以及何时仍应使用 strings.Fields 返回切片。164 收藏 -
Go 的 HTTP/1 服务端默认会在写响应前消费未读请求体。本文用分块上传与流式响应示例说明 ResponseController.EnableFullDuplex 的作用、Flush 的边界、HTTP/2 差异和关闭请求体的验收方法。164 收藏 -
讲清 Go io.SectionReader 的逻辑片段长度与底层文件实际长度的区别,结合 Size、Read、累计字节数和 io.EOF 判断短片段、空片段与完整读取。164 收藏 -
Go atomic.Value 不能把 nil 接口和 *Config 混着存。用 typed nil 指针固定具体类型,再用不可变配置快照完成安全的可选配置热更新。164 收藏 -
Go 里 crypto/rand 和 math/rand 都能生成随机值,但用途完全不同。本文用验证码、抽样和测试数据三个场景拆开安全资产、攻击路径、并发控制与验证方法,给出不容易选错的边界。163 收藏 -
flag.FlagSet.Visit 只遍历用户实际设置过的参数,VisitAll 则按字典序遍历全部已注册参数。通过一个可运行的小实验看清两者的回调范围、默认值和适用场景。163 收藏 -
Go 1.27 为 crypto/tls 增加 MLKEM1024。本文用最小配置和握手检查说明 CurvePreferences 如何显式声明候选组,以及 tlsmlkem、tlssecpmlkem 何时只影响默认选择。163 收藏 -
Go 的 map 遍历顺序没有语言保证,测试不应直接比较遍历结果的顺序;本文用排序、集合比较和显式顺序建模解决这类不稳定断言。163 收藏 -
Go 容器内存限制不是 GOMEMLIMIT 的等价物。本文区分 cgroup 硬上限、Go 运行时软上限和 GOGC,并给出预留余量、指标观测与灰度回滚方法。163 收藏 -
Go map 只有在所有 goroutine 都只读、没有任何写入时才可以安全并发读取。本文区分只读快照、sync.RWMutex、sync.Map 与 atomic.Value 复制替换,说明读写混合场景如何选择同步边界,并用 -race 检查遗漏。163 收藏