Go问答技术文章
-
Go 1.27 新增 ConnectionState.LocalCertificate。本文区分本端证书链、对端证书链与恢复会话,给出可核对的 TLS 观测代码和排查边界。218 收藏 -
Golang · Go问答 | 2星期前 | 错误处理 · 事务 · database/sql · Go问答 · Go database/sql Tx Go事务重试 Go死锁处理 Go序列化冲突 database/sql错误分类
围绕 Go database/sql Tx 讲清可重试并发冲突与业务错误的边界:驱动错误映射、单次事务回滚、事务外有限重试以及提交状态未知时的幂等处理。218 收藏 -
gzip.Writer.Reset 会让对象回到类似刚由 NewWriter 创建的状态,只保留可复用的压缩器与压缩级别,不继承上一条流的 Header。本文说明正确复用顺序、Header 重配和对象池边界。218 收藏 -
token.Pos 是 Go FileSet 中的全局位置值,不是单个源文件的字节下标。本文说明如何通过 token.File.Offset 转换文件内偏移,并处理 NoPos、跨文件和 //line 行列映射。218 收藏 -
从 Go 官方 build_cgo_consistent_results 测试和近期失败记录拆解 cgo 构建一致性的跳过条件、临时目录与编译器参数边界,给出一套不误判为源码问题的 CI 排查方法。217 收藏 -
围绕 httptest.ResponseRecorder 说明 Handler 响应测试的边界,演示 Result、Code、Header 和 Flushed 的正确检查方式,并比较何时应该使用 NewServer。217 收藏 -
Go comparable 约束拒绝包含切片字段的结构体,是因为结构体必须保证所有字段都可比较。本文拆解切片、数组、指针和接口字段的边界,并给出固定数组、摘要键与身份指针的改造选择。217 收藏 -
解释 Go API 中缺失、null、零值和具体值的区别,比较 omitempty、omitzero 与指针字段,并给出兼容 encoding/json/v2 的落地方案。216 收藏 -
Go 的 301、302、303 重定向会把 POST 改成 GET;本文解释 307/308、GetBody 与 CheckRedirect 的关系,帮助你避免请求体丢失和重复提交。216 收藏 -
从平台、路径、工具链、构建标签、共同依赖和符号查找六个边界排查 Go plugin 加载失败,给出可复现的 Open/Lookup 错误判断方法。216 收藏 -
Go base64.DecodeString 返回 CorruptInputError 时,错误值就是需要排查的零基字节偏移。本文用 errors.As 提取位置,结合上下文、字母表、补位、UTF-8 和 Strict 模式,区分非法字符与输入截断。216 收藏 -
multipart.ReadForm 会把超出内存预算的文件部分落到临时目录,Form.RemoveAll 用于删除这些临时文件。本文区分 net/http Server 自动清理与独立解析时必须手动清理的边界。216 收藏 -
Go 类型断言报错时,先确认接口中的动态类型,再用双返回值和 %T 定位原因,并区分 nil 接口与 typed nil,避免用 panic 掩盖输入协议问题。215 收藏 -
用 Go database/sql 设计业务事务时,把 BeginTx、Commit 和 Rollback 放在用例外层,让仓储函数只接收 Tx 并返回错误,避免事务职责分散。215 收藏 -
Go 流式响应发送 Trailer 时,已知字段名必须在首次 WriteHeader、Write 或 Flush 前通过 Trailer 响应头声明;正文写完后再设置最终值。本文用一个 NDJSON 小项目讲清服务端顺序、客户端 EOF 读取、TrailerPrefix 边界和自动化验收。215 收藏