Go语言技术文章
-
Go error经过%w包装后不应再依赖完整字符串判断。本文区分错误文本、哨兵错误和具体类型,给出errors.Is、errors.As及多错误包装的替代方案。487 收藏 -
讲清 Go database/sql 事务提交失败后的三类状态,给出整笔事务重试、request_id 幂等和提交未知状态查询的实现边界。429 收藏 -
Go接口只有动态类型和动态值都未设置时才等于nil。本文用一个小型错误处理示例拆解nil指针装入接口后的判断差异,并给出error返回、类型断言、reflect检查和测试验收方法。369 收藏 -
Go使用database/sql遍历Rows时,循环结束不代表读取完整。本文用一个列表函数说明如何同时处理Scan、Close和Rows.Err,避免把部分结果误当成成功响应。203 收藏 -
Go database/sql 查询可空字符串时,使用 sql.NullString 同时保留 String 与 Valid,区分数据库 NULL、空字符串和普通文本;本文进一步说明 JSON 输出、写回参数与错误边界。501 收藏 -
解释 Go API 中 nil slice 与空 slice 的 JSON 差异,给出响应边界归一化、omitempty 边界和 encoding/json v1/v2 迁移测试方案。411 收藏 -
遍历结构体切片时,range 值变量会复制每个元素。本文用最小示例说明复制边界,并给出索引访问、取地址和基准测试的选择方法。305 收藏 -
用 Go crypto/rand 生成固定长度随机字节,再以 RawURLEncoding 转成 URL 安全令牌;同时说明 TTL、一次性消费和 Go 1.24 rand.Text 的适用边界。323 收藏 -
Go select 的 default 在没有就绪通信时会立即返回,放进永久循环容易造成忙等。本文给出删除 default 的阻塞写法、time.Ticker 退避方案,以及 channel 关闭、nil channel 和 context 取消的排查清单。231 收藏 -
用Go x509.VerifyOptions校验证书时,Roots、Intermediates和DNSName分别承担什么职责?本文给出CertPool组装方法、常见错误排查顺序和吊销检查边界。309 收藏 -
多个 goroutine 往同一个 Go channel 发送数据时,关闭权应交给发送方之外的协调者;本文用 WaitGroup 统一等待并给出提前退出边界。451 收藏 -
用 Go tls.Config.GetCertificate 根据 SNI 动态选择证书,覆盖精确匹配、通配符、默认回退、并发读取与热更新边界。265 收藏 -
Go 向已关闭 channel 发送会触发 panic。本文从发送生命周期出发,说明关闭责任如何划分,并给出多发送方等待后统一 close 的迁移写法与排查清单。402 收藏 -
用 Go multipart.Reader 按字段名设置上传上限,借助 limit+1 字节检测超量,并清理临时文件与请求级资源。456 收藏 -
从闭包变量绑定、Go 版本语义和 Timer 生命周期三个方向,排查循环创建 Go 定时回调时业务标识错位,并给出可落地的修复与回归清单。460 收藏