Go语言技术文章
-
Golang · Go问答 | 4星期前 | 错误处理 · go · Go errors.As errors.As 指针目标 errors.As 非指针类型 Go 错误链匹配 Go Error 接收者
围绕 Go errors.As 的指针与非指针目标写法,解释 Error 接收者、%w 包装、接口目标和常见 panic 边界,给出可直接套用的判断表与代码示例。265 收藏 -
filepath.Clean只能规范化路径字符串,不能证明文件仍在允许目录内。本文用 filepath.Rel 做词法范围判断,再说明符号链接、绝对路径和并发替换的防护边界。265 收藏 -
用 Go tls.Config.GetCertificate 根据 SNI 动态选择证书,覆盖精确匹配、通配符、默认回退、并发读取与热更新边界。265 收藏 -
Go 测试中 t.Parallel 与 t.Setenv 不能直接混用。本文用串行父级、配置注入和串行分组三种组织方式,解决全局环境变量影响并行子测试的问题。265 收藏 -
讲清 Go bufio.Reader.Peek 预读固定协议头时的参数、缓冲区和切片生命周期边界,并用 8 字节 TCP 协议头示例处理 ErrBufferFull、截断输入、长度校验与安全消费。265 收藏 -
Go generate 执行指令时,生成器的工作目录是包含该指令的包源目录,而不是你启动 go 命令的仓库根目录。理解这个基准后,就能稳定处理 schema、模板、输出文件和仓库级生成器的相对路径。264 收藏 -
Go 1.24 的 time.Time.AppendText 可以把 RFC 3339 时间直接追加到复用的 []byte。本文说明如何在循环和写入路径中复用缓冲区、处理错误与字符串转换,并用 benchmark 判断分配是否真正下降。264 收藏 -
Go database/sql 遍历结果集时,Rows.Next 返回 false 可能是正常耗尽,也可能是驱动或 context 错误。本文拆分 Scan、Rows.Err 和 Close 的职责,并给出可复用查询函数写法。263 收藏 -
Go 的 hash.Hash.Sum 会把当前摘要追加到传入切片,并且不改变哈希状态。本文用 sha256 示例说明 nil、前缀、容量复用和继续 Write 的正确写法。263 收藏 -
Go Context 适合携带 trace ID、请求来源等请求级元数据,不适合隐藏订单号、分页条件等业务参数。本文用类型安全的 WithValue 写法、显式 API 参数和取消传播示例说明边界。263 收藏 -
Go 重试机制最难的不是退避算法,而是稳定地区分可重试错误与永久错误。本文用 errors.Is、errors.As、%w、领域错误类型、context 与幂等约束,给出可维护的分类器和重试边界。263 收藏 -
Golang · Go问答 | 3星期前 | net/http · Go问答 · http.MaxBytesReader io.LimitReader Go multipart.Reader Go multipart上传大小限制 multipart.Reader超限处理
Go multipart.Reader本身没有直接设置整包字节上限的参数。本文区分请求体总大小、单个Part大小和ReadForm内存边界,给出MaxBytesReader与LimitReader的组合写法及超限处理清单。262 收藏 -
flate.HuffmanOnly 只做 Huffman 熵编码,不搜索重复字符串。输入很短、字节分布接近均匀、已经完成熵编码,或频繁 Flush 时,DEFLATE 块与同步标记开销可能超过节省的字节。本文说明如何测量并选择模式。262 收藏 -
讲清 Go testing.T.Context 与 Cleanup 的取消时序,演示后台 goroutine 如何通过 done 和 errCh 退出,并在 Cleanup 中安全完成并发断言。262 收藏 -
Go net/http读取请求体超时应分层配置:服务器限制请求头,处理器按接口设置请求体截止时间,再配合MaxBytesReader限制体积。本文给出可复用写法和错误边界。261 收藏