Go语言技术文章
-
os.WriteFile 会先打开并截断已有文件,写入中途失败可能留下残缺内容。本文解释权限错误的判断方法,并用同目录临时文件加替换保护原文件。118 收藏 -
Go 中直接调用 io.ReadAll 会把 Reader 读到 EOF。面对没有可靠长度的 HTTP 响应,应先做 Content-Length 预检查,再用 LimitReader 多读一个字节识别超限,最后把关闭、错误和解析边界统一处理。118 收藏 -
Go 1.24 引入的 weak.Pointer 可以让缓存只保存弱引用。本文用元数据缓存示例拆解 weak.Make、Value、GC 可达性和并发重建边界,帮助你写出可安全丢弃、失效后可回源的缓存。118 收藏 -
maps.Clone 只对 map 的键和值执行普通赋值,因此新旧 map 的顶层容器独立,但切片、指针、内层 map 等引用型值仍共享底层数据。本文通过示例说明边界,并给出切片、嵌套 map 与指针结构的深拷贝写法。118 收藏 -
go.mod 的 toolchain 只建议使用更高的首选工具链,不会把更新的本机 Go 降级。本文按 go.work、GOTOOLCHAIN、版本名称与下载条件排查未切换原因,并给出可复用的诊断命令。118 收藏 -
Go fuzzing 找到失败输入后,如何把大而难读的样本缩成稳定的回归语料?本文说明最小化参数、失败语料目录、生成语料缓存和修复后的 go test 回归流程。118 收藏 -
Go 1.24 起可通过 net/http.Server.Protocols 明确设定 HTTP/1、HTTP/2 与明文 HTTP/2 的接受范围。本文给出 TLS 服务的最小配置、默认行为边界和回归检查方法。117 收藏 -
讲清 Go os.CreateTemp 的目录与 pattern 规则,演示如何按业务前缀创建临时文件,并用 Close、Remove 和 defer 覆盖异常路径清理。117 收藏 -
Go select 加 default 可以做一次非阻塞检查,但不应把它直接放进无节制的循环。本文用状态返回、阻塞等待、ticker 和 context 取消四种边界,说明 default 的适用范围与常见误区。117 收藏 -
Golang · Go教程 | 4星期前 | 并发 · Context · Go教程 · Go context.AfterFunc context.AfterFunc stop Go 回调取消竞态 Go 判断回调是否开始
context.AfterFunc 的 stop 返回 false 并不等于回调已经执行完。本文拆开停止、开始和完成三个状态,用 started 与 finished 通道安全判断回调进度。117 收藏 -
Go weak.Pointer 的比较规则能服务弱键映射,却不能替代业务 ID、持久句柄或对象存活证明。本文结合 Value、KeepAlive、终结器复活与内部指针边界,给出稳定 ID 和弱引用分离的实现方式。117 收藏 -
Go 处理 0.1、19.90 等十进制字符串时,可直接调用 big.Rat.SetString,把输入保存为精确分数,避免先经 float64 引入二进制近似。本文讲清解析失败、精确运算、格式化输出以及与 big.Float、定点整数的选择边界。117 收藏 -
本文实现一个可包裹 slog.JSONHandler 或 TextHandler 的 SecurityHandler:在 Enabled 阶段过滤低级别事件,在 Handle 和 WithAttrs 阶段递归脱敏敏感字段,并正确保留分组、动态级别、下游错误与并发安全语义。117 收藏 -
Go 1.24 引入的 testing.B.Loop 可以把基准测试的一次性初始化和清理放到计时边界之外。本文用固定输入的哈希基准说明正确写法、b.N 迁移边界、编译器优化注意事项和 go test 检查命令。117 收藏 -
用户可控 URL 一旦进入 Go HTTP 客户端,字符串黑名单远远不够。本文从一次图片抓取接口的故障切入,拆解 scheme、端口、DNS 解析、私网地址和重定向的校验顺序,并给出可测试的最小实现边界。116 收藏