Go语言技术文章
-
用 Go testing.B.Run 把一次性样本准备与串行子基准测量分开,说明参数命名、计时边界、结果输出和 RunParallel 的注意事项。190 收藏 -
Go 的 httptest.ResponseRecorder.Flushed 只表示 Handler 是否调用过 Flush。本文用最小测试拆开未调用 Flush、断言过早、ResponseWriter 包装和真实网络缓冲的区别。477 收藏 -
Go 的 httptest.NewUnstartedServer 适合在启动 HTTPS 测试服务前修改 TLS 策略。本文说明 TLS、HTTP Server 配置与 StartTLS 的先后关系,并给出测试客户端和迁移检查清单。463 收藏 -
Golang · Go问答 | 14小时前 | net/http · HTTP客户端 · Go问答 · Go net/http gzip Transport.DisableCompression Accept-Encoding 响应解压
Go 的 Transport.DisableCompression 只控制是否自动添加 Accept-Encoding: gzip;自动请求的 gzip 响应会被透明解压,而用户显式请求 gzip 时仍需自己处理压缩 Body。318 收藏 -
Golang · Go问答 | 14小时前 | HTTP服务 · Go问答 · Go net/http 连接生命周期 StateHijacked StateClosed http.Server.ConnState 会话资源
用 Go 的 http.Server.ConnState 管理连接级会话资源,区分 StateIdle、StateClosed 与 StateHijacked,给出受 mutex 保护、可幂等清理的资源注册表写法,并说明 HTTP/2 与优雅停机边界。123 收藏 -
Go 调试 HTTP 响应时,httputil.DumpResponse(resp, true) 会读取并重新包装响应体。本文用一个完整示例说明记录响应后如何继续读取 Body,并梳理 body 参数、错误路径、关闭时机和大响应体边界。175 收藏 -
用 Go 标准库 httptrace.ClientTrace.GotConn 观察 HTTP 客户端请求拿到的连接,解释 Reused、WasIdle 与 IdleTime 的区别,并给出安全记录日志的最小写法和边界。311 收藏 -
Go container/list.MoveAfter 传入同一个节点时不会改变顺序,因为 e == mark 没有新的位置;本文进一步区分节点值相同、已经相邻和跨链表节点的边界。340 收藏 -
用 sort.Search 的单调谓词找到升序切片中第一个大于等于目标值的位置,正确处理重复值、未命中和末尾插入。274 收藏 -
Go maps.Copy 的目标参数必须是可写 map。本文用最小示例说明 nil map 为什么能读不能写、为什么复制后仍为空,以及配置合并时怎样在正确时机用 make 初始化目标 map。266 收藏 -
Go slices.CompactFunc 会在压缩连续重复项后清零尾部元素。本文区分尾部引用与整个 backing array 的生命周期,给出直接接收返回值、Clone 脱离旧数组和 Clip 的使用边界。329 收藏 -
Go time.Ticker.Reset 只改变后续周期,不等于清空 ticker.C。本文解释旧 tick 为什么不能用普通接收直接“排空”,并给出单 goroutine、非阻塞判断和重建 ticker 的选择边界。339 收藏 -
Go time.ParseDuration 只接受固定的 duration 单位。本文从配置输入场景出发,说明中文单位、未知单位、缺少单位和合法复合时长的处理方式,并给出清晰错误提示的写法。107 收藏 -
time.Time.Round 不只是把纳秒取整:它按墙上时间计算,并会去掉单调时钟读数。因此原值与 Round 结果用 ==、Equal、Compare 比较时可能得到不同结论。本文用最小示例拆开三种语义,并给出测试断言和时间键的选择方法。195 收藏 -
Go 的 time.Parse 使用参考时间表达布局,-0700 代表无冒号的数值时区偏移模板,而不是固定的西七区。本文用输入对照和最小示例说明如何选择 -0700、-07:00 与 Z07:00。422 收藏