Go语言技术文章
-
用 Go os.CreateTemp 在目标目录创建 0600 临时文件,完成写入与同步后再 Rename 替换目标,覆盖清理、并发、权限和跨平台边界。268 收藏 -
本文解释 atomic.Value 首次写入如何固定具体类型,分析值与指针、接口动态类型、nil 写入导致 panic 的原因,并给出稳定包装类型的安全方案。268 收藏 -
Golang · Go教程 | 1个月前 | golang · https · TLS · Go教程 · 生产运维 · atomic.Value Go HTTPS证书热切换 GetCertificate tls.Certificate 证书轮换
Go HTTPS 服务轮换证书时,不必为了替换文件重启进程。本文用 tls.Config.GetCertificate 和 atomic.Value 保存当前证书,演示新连接切换、旧连接保持、加载失败回退与指标核对,给出适合生产灰度的实现边界。267 收藏 -
Go 使用 io.CopyN 复制固定长度数据时,源数据不足会返回已复制字节数和 EOF。本文用可复现的小例子拆开短读、剩余字节与错误判断,并说明什么时候应该改用 io.ReadFull。267 收藏 -
Go 的 encoding/binary.NativeEndian 适合读取本机格式,但不应直接替代协议字节序。本文用一个二进制记录示例拆开 NativeEndian、unsafe 转换和跨机器可移植编码的边界。267 收藏 -
bytes.Buffer.Bytes 返回的是未读内容的别名切片,不是自动拷贝。本文用 Write、Grow、Reset 和 append 的边界说明何时可以直接读,何时必须 copy,避免缓存复用后数据悄悄变化。267 收藏 -
Go 1.27 将 uuid 纳入标准库后,生成、解析和数据库持久化该怎么分层?本文用一个订单请求标识场景,拆开 uuid API 的职责、字符串边界、二进制存储取舍与迁移检查点。267 收藏 -
Golang · Go问答 | 3星期前 | 单元测试 · 错误处理 · go · Go testing.T Cleanup失败 Go t.Cleanup错误处理 Go测试清理函数继续执行 Go测试失败不终止 Go测试资源释放排查
t.Cleanup 是测试结束阶段的清理回调,失败只会影响测试结果或当前清理函数,不会回到注册点打断已经继续执行的测试体。本文按执行时机、失败标记和清理顺序拆解排查方法。267 收藏 -
使用Go标准库mime/multipart解析上传请求时,先从Content-Type取得boundary,再用multipart.Reader按部件读取Header、字段名和文件名,并正确区分io.EOF与解析错误。267 收藏 -
Go map遍历顺序不应作为输出契约。本文用键切片排序和Go 1.23+的maps.Keys与slices.Sorted,演示如何在不修改原始map的前提下稳定输出配置项,并说明字符串键、数值键、空Map与并发边界。267 收藏 -
Go regexp 遇到 .+ 贪婪匹配时,字段可能跨过分隔符吞掉后续内容。本文用可复现输入对比贪婪、非贪婪和字符类边界,并给出子匹配回归清单。267 收藏 -
Go 的 fmt 在格式化实现 Stringer 的值时会调用 String;如果 String 再把原接收者交给 fmt,就可能反复分派。本文给出复现、修复与方法集边界。267 收藏 -
Go 的 rows.Scan 成功只说明当前行完成了类型转换,rows.Err 才能确认整个结果集迭代没有在 Next、网络或 context 取消处失败。本文给出可直接复用的处理模板和边界清单。267 收藏 -
Golang · Go问答 | 1个月前 | 标准库 · 排序 · 泛型 · Go问答 · Go 稳定排序 iter.Seq slices.SortedStableFunc slices.Values
slices.SortedStableFunc 适合把迭代器中的数据收集到新切片后稳定排序。本文用订单优先级示例说明相等元素为什么保序、原切片为什么不会被直接改写,以及 Go 1.23 代码的兼容边界。266 收藏 -
Go 1.27 为 go test -json 的 output 事件增加可选 OutputType。本文用兼容解析器讲清 frame、error、error-continue 与空值的处理方式,以及多行错误如何合并而不丢失原始输出。266 收藏