Go语言技术文章
-
maps.Clone 只对 map 的键和值执行普通赋值,因此新旧 map 的顶层容器独立,但切片、指针、内层 map 等引用型值仍共享底层数据。本文通过示例说明边界,并给出切片、嵌套 map 与指针结构的深拷贝写法。118 收藏 -
go.mod 的 toolchain 只建议使用更高的首选工具链,不会把更新的本机 Go 降级。本文按 go.work、GOTOOLCHAIN、版本名称与下载条件排查未切换原因,并给出可复用的诊断命令。118 收藏 -
讲清 Go os.CreateTemp 的目录与 pattern 规则,演示如何按业务前缀创建临时文件,并用 Close、Remove 和 defer 覆盖异常路径清理。117 收藏 -
Go select 加 default 可以做一次非阻塞检查,但不应把它直接放进无节制的循环。本文用状态返回、阻塞等待、ticker 和 context 取消四种边界,说明 default 的适用范围与常见误区。117 收藏 -
Golang · Go教程 | 3星期前 | 并发 · 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 收藏 -
讲清 Go regexp.QuoteMeta 如何把用户输入转成字面匹配片段,并给出与固定正则组合、处理空输入和区分替换模板的实践方法。116 收藏 -
说明 Go net.Resolver 如何通过 LookupIP 的 ip4/ip6 和 DialContext 的 tcp4/tcp6 表达地址族偏好,区分 PreferGo、StrictErrors 与真正的 IPv4/IPv6 选择边界。116 收藏 -
用 Go testing/fstest.MapFS 在内存中构造文件树,让依赖 fs.FS 的读取逻辑脱离临时目录,并覆盖内容、目录和缺失文件测试。116 收藏 -
解释 Go bufio.Scanner 遇到 ErrFinalToken 时的停止条件,区分最后 token、nil token、Scan 返回值和 Scanner.Err。116 收藏 -
解释 Go url.ParseQuery 遇到未编码分号时返回错误的原因,区分分隔符与参数值,给出正确编码、旧协议兼容和回归检查方法。115 收藏 -
Go 文件读取不是简单比较 API 名称:完整内容且能放进内存预算时用 os.ReadFile,只取固定范围或需要随机访问时用 File.ReadAt;本文用文件大小、访问模式和短读处理给出判断清单。115 收藏