Go语言技术文章
-
Go Transport 参数调大后延迟不一定下降。本文从 Client 生命周期、空闲连接与并发上限、Response.Body 关闭和可观测信号四个方面排查原因。407 收藏 -
Go 的 CheckRedirect 返回自定义错误时,Response 可能仍非空但 Body 已关闭;如果要读取最后一次响应,应返回 http.ErrUseLastResponse,并在调用方负责读取和关闭 Body。285 收藏 -
Go 的 http.Client 内部依赖 Transport 的连接缓存。本文用一个可复用请求示例说明 Client 生命周期、Response.Body 关闭和连接复用的关系。236 收藏 -
Go 的 http.Client 跟随重定向时,Authorization 并不是随机丢失。本文用重定向链、目标域名和 CheckRedirect 说明敏感请求头的转发边界,并给出可信目标允许、跨域停止和错误判断的写法。212 收藏 -
Go HTTP Client 连接不复用时,先用可观测的 Body 包装器确认 Close,再用 httptrace 判断连接是否进入复用池,并检查 Client 与 Transport 的生命周期。311 收藏 -
Go http.Client 默认会跟随重定向。本文用 CheckRedirect 和 http.ErrUseLastResponse 保留原始 3xx 响应,说明 Location、请求头、响应体及普通错误返回的边界。458 收藏 -
Go 并发代码里,atomic.Pointer[T] 适合发布一个可整体替换的指针,sync.Mutex 适合保护多个字段组成的不变量。本文按读写模式、对齐和混用风险给出选择方法。337 收藏 -
Go 的 encoding/xml.Marshal 会按 XMLName、xml.Name、字段标签和类型名决定元素名称。本文用一个订单报文示例说明如何固定根节点、表达命名空间、把字段输出成属性,并用嵌套路径组织子元素。278 收藏 -
atomic.Value 先保存 int 后保存 string 为什么会 panic?本文解释 any 背后的动态具体类型,并用固定 Snapshot 外层结构安全承载多种业务数据。494 收藏 -
使用 Go 的 encoding/xml 解析重复出现的嵌套元素时,把匹配字段声明为切片即可逐项接收;再结合 XMLName、属性标签和命名空间 URI 约束结构,避免同名节点映射错位。380 收藏 -
把 atomic.Int64 放进结构体时,优先让类型承担 64 位对齐,并配合不复制、统一原子读写和 32 位构建检查,避免裸 int64 的未对齐访问风险。428 收藏 -
Go 的 encoding/xml 遇到带嵌套标签的混合文本时,直接映射结构体容易忽略空白。本文用 Token、CharData、XMLName 和命名空间字段完成可控读取。168 收藏 -
Go 测试中不要直接清空或复制已使用的 sync.Once。本文解释初始化、panic、并发和复制边界,并给出用实例工厂实现测试隔离的写法。384 收藏 -
Go 的 encoding/json 把未知 JSON 数字默认解码为 float64,转入 interface{} 后可能丢失大整数精度。本文用 UseNumber、json.Number、RawMessage 和明确字段类型分别处理动态 JSON、多态字段与业务 ID。330 收藏 -
Go sync.Once 卡住时,先从初始化 goroutine 的栈确认阻塞资源,再排除重入、锁闭环和无界外部 I/O;需要重试时使用显式状态或新的拥有者,不要直接清零 Once。199 收藏