Go语言技术文章
-
Go encoding/xml.Decoder 的 Token、Decode 和 DecodeElement 都通过 error 报告解析问题。本文说明如何区分 io.EOF 与真实失败,用 %w 保留错误链,并结合 InputPos、InputOffset 和受控原始缓存补齐排查上下文。493 收藏 -
bufio.Reader.Peek 可以在不推进读取位置的情况下查看输入前缀,适合把一个流交给不同解析器。本文用一个小型输入分发工具说明 Peek 的组合方式、缓冲区边界、短输入和返回切片生命周期。493 收藏 -
Paho MQTT 的 OrderMatters 默认开启时,消息回调不能阻塞或直接调用可能阻塞的库函数。本文解释它与消息顺序、回调 goroutine、worker queue 和 Publish 等操作的关系,并给出两种安全写法。493 收藏 -
通过Problem、Minimize与NelderMead实现自定义标量函数最小化,说明变量维度、方法契约、计算预算及候选结果的解释。493 收藏 -
读取 EUC-KR 或 CP949 保存的旧韩文文本时,不能直接把原始字节转换成 UTF-8 字符串。本文用 golang.org/x/text/encoding/korean 的 EUCKR 解码器接入 transform.Reader,给出整文件读取、流式复制、错误处理和内存取舍。493 收藏 -
fmt.Sscanf 适合解析结构稳定的字符串:用格式模板约束字段位置,用指针接收值,再同时检查扫描数量和 error。普通动词会按扫描规则处理空白,%c 则直接读取下一个字符。493 收藏 -
Go time.Ticker 停止后循环仍不退出,关键在于 Stop 不关闭 C。用 context 取消、defer Stop 和完成通道划分职责,并说明 Go 1.23 回收语义及回调阻塞边界。493 收藏 -
请求结束后仍要完成异步任务时,先用 context.WithoutCancel 脱离请求取消,再用 context.WithTimeout 设置独立期限;本文同时说明值传递、取消边界和常见误区。493 收藏 -
Go 1.27 的 encoding/json/v2 可用 StringifyNumbers 把数字编码为 JSON 字符串。本文对比调用级选项与字段级 string 标签,给出旧客户端兼容、严格解码、精度测试和灰度退出方案。493 收藏 -
用 Go runtime/trace 的 Flight Recorder 保留延迟尖峰前的有限执行轨迹,配置 MinAge、MaxBytes,并在阈值触发时安全写出快照。493 收藏 -
Go 的 url.Values 本质是 map[string][]string。批量合并查询参数时,Add 负责追加,Set 负责替换;配合 Clone 和 Encode 可以实现有优先级、可复用且不污染原输入的 URL 查询构造。493 收藏 -
围绕 Go http.CookieJar 的 Secure 属性,说明 HTTP 测试为何取不到安全 Cookie,并给出 HTTP 与 TLS 测试入口、Jar.Cookies(u) 和四项排查清单。493 收藏 -
Go container/list 删除异常通常不是链表坏了,而是把 Value 当成 Element、节点来自另一条 List,或遍历时没有先保存 Next。本文按这三类现象给出排查和回归清单。493 收藏 -
deferclose 不是 Go 内置函数,通常指用 defer 安排 Close。本文解释 defer 的后进先出顺序、循环里的作用域,以及文件和 sql.Rows 的关闭错误如何处理。493 收藏 -
Go 控制 multipart 请求体积不能只调大或调小 maxMemory。本文用 MaxBytesReader 限制总 body,用 ParseMultipartForm 管理解析内存,再用 MultipartReader 和 LimitReader 控制单个 part,补上数量、临时文件和错误处理边界。493 收藏