Go语言技术文章
-
Go TCP 建连成功不代表业务响应完成。本文按读写阶段检查过期 deadline、缓冲刷新、协议帧和部分传输,并用独占连接示例说明交换预算与超时重试边界。218 收藏 -
解释 Go net/http 中 Request.Body 与 Response.Body 的责任差异,给出共享 Client、读完响应体并关闭 Body 的可复用最小示例,并说明大响应和禁用 keep-alive 的边界。218 收藏 -
Go database/sql 遍历 Rows 时,Scan 失败要及时停止读取并关闭结果集;循环结束后还要检查 Rows.Err,区分行转换错误与驱动读取错误。217 收藏 -
用 iter.Pull 把 Go 的 iter.Seq 转成 next/stop 拉取式接口,说明按需读取、正常结束、提前停止、Pull2 和并发调用的边界。217 收藏 -
Go 测试遇到环境、资源或输入条件不满足时,可以用 testing.T.Skip 或 Skipf 标记为跳过并保留原因。本文说明如何划分 Skip、Fail 与 Fatal 的边界,并给出条件测试、子测试和模糊测试的写法。217 收藏 -
Go encoding/hex NewEncoder 返回一个 io.Writer,适合把网络、文件或协议分片连续编码成小写十六进制文本。本文说明 Writer 链、Write 返回值、下游错误和一次性编码 API 的选择边界。217 收藏 -
Go slices.All 会把切片转换成按顺序产生索引和值的迭代器,配合 range 就能保留传统遍历的两个变量。本文从返回类型、空切片、提前停止和写回原切片几个边界说明它的使用方式,并比较何时直接 range 更简单。217 收藏 -
Go image.YCbCr 的 Cb 和 Cr 不是总与 Y 像素一一对应。本文用 COffset、SubsampleRatio、Rect.Min 和 CStride 说明下采样后的色度索引计算,并给出安全读取示例。217 收藏 -
Go net/http/pprof 默认会注册一组运行时诊断处理器,但诊断入口不应该跟业务接口一起匿名暴露。本文用专用 ServeMux 和鉴权中间件把请求从入口、校验、profile 输出到工具消费串成一条链,并说明拒绝响应、采集时长和关闭诊断服务的边界。217 收藏 -
Go INI 的 Key 会把不存在的键转换成空值键,GetKey 才能保留缺失错误;MustString 则在键值为空时返回并写入默认值。本文用对照代码说明三者的边界和配置选择。217 收藏 -
Go gopacket 可以直接把内存中的 []byte 按指定起始层解码成 Packet,再通过 Layers、Layer 和具体协议层读取以太网、IP、TCP 或 UDP 字段。本文给出一套可复用的内存帧解码写法,并说明错误层、Lazy、NoCopy 与批量解析的边界。217 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · go · TLS · Go crypto/tls TLS会话恢复 ClientSessionCache SessionTicketsDisabled
Go 的 SessionTicketsDisabled 会关闭 TLS 会话票据和 PSK 恢复支持,但客户端 ClientSessionCache 为空时也不会恢复。本文分清 TLS 恢复与 TCP 复用,说明客户端缓存、服务端票据和 ConnectionState.DidResume 的判断边界,并给出适合测试与安全策略切换的配置建议。217 收藏 -
Go 的 go/ast.Inspect 看起来不生效,通常不是遍历函数没有执行,而是解析错误被忽略、回调类型筛选不匹配、return false 提前剪枝,或把 n == nil 的收尾回调误当成异常。本文从 ParseFile 到位置输出逐步拆解这些边界,并给出可直接改造的排查代码。217 收藏 -
Go filepath.WalkDir 默认不会进入目录中的符号链接,这不是遍历失败,而是标准库刻意定义的边界。本文用最小目录树复现现象,再说明怎样读取链接本身、解析目标,并为显式递归补上循环保护。217 收藏 -
Go AST 可通过 FuncType.TypeParams 提取泛型函数的类型参数。本文给出名称展开、约束格式化和注释转义的完整示例,说明自动生成文档时的失败处理与语义边界。217 收藏