Go语言技术文章
-
Go copy返回值偏小时,先看目标切片的len而不是cap。本文用代码和表格说明copy的可见范围、容量扩展方式、重叠复制与空切片边界。246 收藏 -
围绕 Go errors.As 讲清自定义错误类型、错误包装链、Unwrap 和目标指针的配合方式,帮助业务层按稳定字段分层处理错误而不是比较易变的文本。471 收藏 -
Go errors.Join适合把多个清理或批处理失败原因合并为一个error返回,同时保留errors.Is和errors.As的可判定链。本文用资源关闭场景说明nil处理、错误遍历、上下文包装和兼容边界。459 收藏 -
从并发读写 panic 的调用关系入手,比较 map 加 RWMutex、sync.Map 和单协程所有权三种替代结构,给出迁移代码与回归检查边界。108 收藏 -
Golang · Go教程 | 3天前 | 命令行工具 · Go教程 · flag.NewFlagSet ContinueOnError Go flag.FlagSet Go 子命令 Go 命令行参数解析
用 Go flag.FlagSet 为 serve、export 等子命令隔离参数、帮助和错误输出,掌握 ContinueOnError、SetOutput、Args 与位置参数的组织边界。355 收藏 -
sort.Slice 不会替你校验 less 比较器是否构成严格弱序。本文从异常结果、传递性、多字段排序、稳定排序和测试清单说明如何修复比较器。404 收藏 -
讲清 Go os/exec 中 Cmd.Dir、cmd.Environ 和 Env 的配置顺序,并用独立缓冲区保存 stdout、stderr,区分启动失败与 ExitError。395 收藏 -
解释 Go crypto/rand.Read 的完整填充保证,并用 io.ReadFull 处理自定义 Reader 或通用 io.Reader 的短读,避免把不足字节的数据误当成完整令牌。351 收藏 -
通过值接收者、指针接收者和 reflect.Type.NumMethod 的小实验,解释 Go 方法集如何影响接口实现判断,并给出编译期断言与边界检查方法。491 收藏 -
Go crypto/x509 中把自签名根证书加入 Roots 仍验证失败时,重点检查 Intermediates、服务器发送链、DNSName 和错误类型,本文给出可复用的排查代码与部署清单。327 收藏 -
Go reflect 读取结构体标签时,要用 Lookup 区分缺失与空值,并用 IsExported、CanInterface 过滤未导出字段,避免反射访问触发 panic。348 收藏 -
Go TLS 证书验证失败时,不要先关闭校验。先按 x509 错误判断主机名是否匹配,再检查 RootCAs、中间证书和系统根证书,最后用 VerifyOptions 做独立定位。487 收藏 -
用 go test -benchmem 和 testing.B.ReportAllocs 读懂 B/op、allocs/op,再通过子基准、计时边界、逃逸分析与内存剖析定位 Go 基准中的临时对象来源。409 收藏 -
Go io.MultiWriter按顺序写入多个Writer,首个错误会截断后续目标。本文用故障示例拆解部分成功语义,并给出全量一致、尽力写入和可重试封装的处理边界。195 收藏 -
Go fuzz 测试发现崩溃输入后,如何利用 testdata/fuzz 语料目录在普通 go test 中稳定回归。195 收藏